home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / master / Doc / dice_commands.doc next >
Text File  |  1994-08-18  |  135KB  |  3,427 lines

  1. dice/CommandSummary                                      dice/CommandSummary
  2.  
  3.     Command    : Purpose
  4.     ===========+=========================================================
  5.     ame       : Advanced MicroEmacs text editor.
  6.     -----------+---------------------------------------------------------
  7.     bintohex   : Convert binary files to Motorola S-records or Intel Hex
  8.            : Dumps.  Used for programming ROM chips.
  9.     -----------+---------------------------------------------------------
  10.     cat       : Shows contents of text files (takes wild cards)
  11.     -----------+---------------------------------------------------------
  12.     ci       : Check in RCS Source (RCS).
  13.     -----------+---------------------------------------------------------
  14.     co       : Check out RCS Source (RCS).
  15.     -----------+---------------------------------------------------------
  16.     das       : DICE Assembler.
  17.     -----------+---------------------------------------------------------
  18.     dc1       : DICE Compiler.
  19.     -----------+---------------------------------------------------------
  20.     dcc       : DICE Compiler Front End.
  21.     -----------+---------------------------------------------------------
  22.     dcpp       : DICE Preprocessor.
  23.     -----------+---------------------------------------------------------
  24.     dd       : DICE Debugger.
  25.     -----------+---------------------------------------------------------
  26.     DICEHelp   : Fast online help utility.    Integrates with any editor.
  27.     -----------+---------------------------------------------------------
  28.     diff,       : File compare utility, three-way file compare utility
  29.     diff3       : (RCS).
  30.     -----------+---------------------------------------------------------
  31.     dlink       : DICE Linker.
  32.     -----------+---------------------------------------------------------
  33.     dmake       : DICE Make Utility. Automates compiles.
  34.     -----------+---------------------------------------------------------
  35.     dme       : Text editor.
  36.     -----------+---------------------------------------------------------
  37.     dobj       : Disassembles object & executable files.
  38.     -----------+---------------------------------------------------------
  39.     dprof       : Code profiler.  Helps optimize code for speed.
  40.     -----------+---------------------------------------------------------
  41.     dsearch    : Search for a string in a File.
  42.     -----------+---------------------------------------------------------
  43.     du       : Determine Disk space Usage.
  44.     -----------+---------------------------------------------------------
  45.     dupdate    : Distribution Maker.
  46.     -----------+---------------------------------------------------------
  47.     expand       : Expand Wild cards to stdout with formatting.
  48.     -----------+---------------------------------------------------------
  49.     fdtolib    : Creates Link Libraries from standard .FD files.
  50.     -----------+---------------------------------------------------------
  51.     fdtopragma : Converts standard .FD files into
  52.     -----------+---------------------------------------------------------
  53.     flush       : Flush libraries, etc. out of memory.
  54.     -----------+---------------------------------------------------------
  55.     head       : Display first few lines of a file.
  56.     -----------+---------------------------------------------------------
  57.     hunks       : Show internal structure of object or executable files.
  58.     -----------+---------------------------------------------------------
  59.     ident       : Identify files (RCS).
  60.     -----------+---------------------------------------------------------
  61.     istrip       : Strip Comments from include files.
  62.     -----------+---------------------------------------------------------
  63.     lbmake       : Link Library Creation Utility.
  64.     -----------+---------------------------------------------------------
  65.     libtos       : Convert Large-Data Amiga.lib to Small-Data version.
  66.     -----------+---------------------------------------------------------
  67.     loadabs    : For creating ROM images located at a specific address.
  68.     -----------+---------------------------------------------------------
  69.     loadfile   : Load & hold a file in memory.
  70.     -----------+---------------------------------------------------------
  71.     makeindex  : Create an index file for use by DICEHelp.
  72.     -----------+---------------------------------------------------------
  73.     makeproto  : Create a file containing function prototypes for your
  74.            : code.
  75.     -----------+---------------------------------------------------------
  76.     merge       : Three Way File Merge (RCS).
  77.     -----------+---------------------------------------------------------
  78.     rcs       : Change RCS File Attributes (RCS).
  79.     -----------+---------------------------------------------------------
  80.     rcsclean   : Clean up RCS Working Files (RCS).
  81.     -----------+---------------------------------------------------------
  82.     rcsdiff    : Compare RCS Revisions (RCS).
  83.     -----------+---------------------------------------------------------
  84.     rcsmerge   : Merge RCS Revisions (RCS).
  85.     -----------+---------------------------------------------------------
  86.     rlog       : Display RCS History (RCS).
  87.     -----------+---------------------------------------------------------
  88.     romable    : Generate romable image.
  89.     -----------+---------------------------------------------------------
  90.     touch       : Update a file's datestamp without changing the file.
  91.     -----------+---------------------------------------------------------
  92.     ttxsame    : Used by integrated error scripts to start TurboText.
  93.     -----------+---------------------------------------------------------
  94.     VMake       : Visual Make program.  A front-end for the compiler.
  95.     -----------+---------------------------------------------------------
  96.     VOpts       : Visual Options.  Usually invoked from within VMake.
  97.     -----------+---------------------------------------------------------
  98.     wbrun       : Used to simulate starting a program from Workbench.
  99.     -----------+---------------------------------------------------------
  100.     wc       : Count words, lines, etc. in a file.
  101.     -----------+---------------------------------------------------------
  102.  
  103. dice/AME                                                            dice/AME
  104.  
  105.     FUNCTION
  106.     Advanced MicroEmacs text editor
  107.  
  108.     DESCRIPTION
  109.     AME is an advanced version of the MicroEmacs text editor.  See
  110.     chapter  for details.
  111.  
  112.     SEE ALSO
  113.     dme
  114.  
  115. dice/bintohex                                                  dice/bintohex
  116.  
  117.     FUNCTION
  118.     Generate Motorola S-Records
  119.  
  120.     SYNOPSIS
  121.     bintohex inFile [-o outFile] -s[1,2,3] [-i] [-O offset]
  122.  
  123.     DESCRIPTION
  124.     Bintohex converts a binary file into Motorola S-Record or Intel  Hex
  125.     format files.  Hex format files are used by many brands of EPROM or
  126.     Flash EPROM programming devices, and are accepted by by most vendors
  127.     of mask ROM.
  128.  
  129.     inFile  Binary input file.
  130.  
  131.  -o outFile
  132.         Output file.  If no output file is specified, bintohex writes to
  133.         the console.
  134.  
  135.  -s[1,2,3]  Specify Motorola S-Record format.  Records are output in the
  136.         form:
  137.  
  138.         SXnn[addr]DD..DDcc
  139.  
  140.        SX      : X is the file type, S1, S2 or S3.
  141.        -------+-------------------------------------------------------
  142.        nn      : Number of bytes, not including the two nn characters.
  143.        -------+-------------------------------------------------------
  144.        [addr] : Address.  S1=4 bytes, 64K limit.
  145.        -------+-------------------------------------------------------
  146.           : S2=6 bytes, 16MB limit.
  147.        -------+-------------------------------------------------------
  148.           : S3=8 bytes, 4GB limit.
  149.        -------+-------------------------------------------------------
  150.        DD..DD : Data, in hexadecimal pairs.
  151.        -------+-------------------------------------------------------
  152.        cc      : Line checksum. 0xff minus the sum of bytes on line.
  153.        -------+-------------------------------------------------------
  154.  
  155.     -i  Specify Intel Hex format.  64K bytes maximum.  Records are
  156.         formatted:
  157.  
  158.         :xxaaaarrDD..DDcc
  159.  
  160.     xx   : Number of bytes on line.
  161.     -----+--------------------------------------------------------------
  162.     aaaa : Address. Intel files are limited to 64K bytes of addressing.
  163.     -----+--------------------------------------------------------------
  164.     rr   : Record type: 00=normal, 01=end.
  165.     -----+--------------------------------------------------------------
  166.     DD   : Data (xx bytes worth).
  167.     -----+--------------------------------------------------------------
  168.     cc   : Checksum: 0 minus the sum of bytes on line.
  169.     -----+--------------------------------------------------------------
  170.  
  171.  -O offset  Set initial address offset for hex file.
  172.  
  173. dice/cat                                                            dice/cat
  174.  
  175.     FUNCTION
  176.     Display file contents
  177.  
  178.     SYNOPSIS
  179.     cat [files...]
  180.  
  181.     DESCRIPTION
  182.     Like the AmigaDOS type command, cat displays one or more files on the
  183.     standard output.  Wildcards and multiple file names are accepted.
  184.  
  185. dice/ci                                                              dice/ci
  186.  
  187.     FUNCTION
  188.     Check in RCS Source
  189.  
  190.     SYNOPSIS
  191.     ci [ options ] file ...
  192.  
  193.     DESCRIPTION
  194.     Ci stores new revisions into RCS files.  Each file name ending in ,v
  195.     is taken to be an RCS file, all others are assumed to be working
  196.     files containing new revisions.  Ci deposits the contents of each
  197.     working file into the corresponding RCS file.  If only a working file
  198.     is given, ci tries to find the corresponding RCS file in the
  199.     directory RCS and then in the current directory.  For more details,
  200.     see the file naming section below.
  201.  
  202.     For ci to work, the caller's login must be on the access list, except
  203.     if the access list is empty or the caller is the superuser or the
  204.     owner of the file.  To append a new revision to an existing branch,
  205.     the tip revision on that branch must be locked by the caller.
  206.     Otherwise, only a new branch can be created.  This restriction is not
  207.     enforced for the owner of the file, unless locking is set to strict
  208.     (see rcs).  A lock held by someone else may be broken with the rcs
  209.     command.
  210.  
  211.     Normally, ci checks whether the revision to be deposited is different
  212.     from the preceding one.  If it is not different, ci either aborts the
  213.     deposit (if -q is given) or asks whether to abort (if -q is omitted).
  214.     A deposit can be forced with the -f option.
  215.  
  216.     For each revision deposited, ci prompts for a log message.  The log
  217.     message should summarize the change and must be terminated with a
  218.     line containing a single . or a CTRL-\.  If several files are checked
  219.     in, ci asks whether to reuse the previous log message.    If the
  220.     standard input is not a terminal, ci suppresses the prompt and uses
  221.     the same message for all files.  See also -m.
  222.  
  223.     The number of the deposited revision can be given by any of the
  224.     options -r, -f, -k, -l, -u, or -q.
  225.  
  226.     If the RCS file does not exist, ci creates it and deposits the
  227.     contents of the working file as the initial revision (default number:
  228.     1.1).  The access list is initialized to empty.  Instead of the log
  229.     message, ci requests descriptive text (see -t below).
  230.  
  231.    -r[rev]  assigns the revision number rev to the checked-in revision,
  232.         releases the corresponding lock, and deletes the working file.
  233.         This is the default.  Rev may be symbolic, numeric, or mixed.
  234.  
  235.         If rev is a revision number, it must be higher than the latest
  236.         one on the branch to which rev belongs, or must start a new
  237.         branch.
  238.  
  239.         If rev is a branch rather than a revision number, the new
  240.         revision is appended to that branch.  The level number is
  241.         obtained by incrementing the tip revision number of that branch.
  242.         If rev indicates a non-existing branch, that branch is created
  243.         with the initial revision numbered rev.1.
  244.  
  245.         If rev is omitted, ci tries to derive the new revision number
  246.         from the caller's last lock.  If the caller has locked the tip
  247.         revision of a branch, the new revision is appended to that
  248.         branch.  The new revision number is obtained by incrementing the
  249.         tip revision number.  If the caller locked a non-tip revision, a
  250.         new branch is started at that revision by incrementing the
  251.         highest branch number at that revision.  The default initial
  252.         branch and level numbers are 1.
  253.  
  254.         If rev is omitted and the caller has no lock, but he is the owner
  255.         of the file and locking is not set to strict, then the revision
  256.         is appended to the default branch (normally the trunk; see the -b
  257.         option of rcs).
  258.  
  259.         || NOTE: On the trunk, revisions can be appended to the end, but
  260.         || not inserted.
  261.  
  262.    -f[rev]  forces a deposit; the new revision is deposited even it is not
  263.         different from the preceding one.
  264.  
  265.    -k[rev]  searches the working file for keyword values to determine its
  266.         revision number, creation date, state, and author (see co), and
  267.         assigns these values to the deposited revision, rather than
  268.         computing them locally.  It also generates a default login
  269.         message noting the login of the caller and the actual checkin
  270.         date.  This option is useful for software distribution. A
  271.         revision that is sent to several sites should be checked in with
  272.         the -k option at these sites to preserve the original number,
  273.         date, author, and state.  The extracted keyword values and the
  274.         default log message may be overridden with the options -r, -d,
  275.         -s, -w, and -m.
  276.  
  277.    -l[rev]  works like -r, except it performs an additional co -l for the
  278.         deposited revision.  Thus, the deposited revision is immediately
  279.         checked out again and locked.  This is useful for saving a
  280.         revision although one wants to continue editing it after the
  281.         checkin.
  282.  
  283.    -u[rev]  works like -l, except that the deposited revision is not locked.
  284.         This is useful if one wants to process (e.g., compile) the
  285.         revision immediately after checkin.
  286.  
  287.    -q[rev]  quiet mode; diagnostic output is not printed.  A revision that is
  288.         not different from the preceding one is not deposited, unless -f
  289.         is given.
  290.  
  291.     -ddate  uses date for the checkin date and time.  Date may be specified
  292.         in free format as explained in co.    Useful for lying about the
  293.         checkin date, and for -k if no date is available.
  294.  
  295.      -mmsg  uses the string msg as the log message for all revisions checked
  296.         in.
  297.  
  298.     -nname  assigns the symbolic name name to the number of the checked-in
  299.         revision.  Ci prints an error message if name is already assigned
  300.         to another number.
  301.  
  302.     -Nname  same as -n, except that it overrides a previous assignment of
  303.         name.
  304.  
  305.    -sstate  sets the state of the checked-in revision to the identifier
  306.         state.  The default is Exp.
  307.  
  308.  -t[txtfile]
  309.         writes descriptive text into the RCS file (deletes the existing
  310.         text).  If txtfile is omitted, ci prompts the user for text
  311.         supplied from the standard input, terminated with a line
  312.         containing a single . or C\.  Otherwise, the descriptive text is
  313.         copied from the file txtfile.  During initialization, descriptive
  314.         text is requested even if -t is not given.    The prompt is
  315.         suppressed if standard input is not a terminal.
  316.  
  317.    -wlogin  uses login for the author field of the deposited revision.
  318.         Useful for lying about the author, and for -k if no author is
  319.         available.
  320.  
  321.     FILE NAMING
  322.     Pairs of RCS files and working files may be specified in 3 ways (see
  323.     also the example section of co).
  324.  
  325.     1) Both the RCS file and the working file are given.  The RCS file
  326.        name is of the form path1/workfile,v and the working file name is
  327.        of the form path2/workfile, where path1/ and path2/ are (possibly
  328.        different or empty) paths and workfile is a file name.
  329.  
  330.     2) Only the RCS file is given.    Then the working file is assumed to
  331.        be in the current directory and its name is derived from the name
  332.        of the RCS file by removing path1/ and the suffix ,v.
  333.  
  334.     3) Only the working file is given.  Then ci looks for an RCS file of
  335.        the form path2/RCS/workfile,v or path2/workfile,v (in this order).
  336.  
  337.     If the RCS file is specified without a path in 1) and 2), then co
  338.     looks for the RCS file first in the directory RCS, then in the
  339.     directory contained in the file RCS_LINK, followed by the current
  340.     directory.
  341.  
  342.     DIAGNOSTICS
  343.     For each revision, ci prints the RCS file, the working file, and the
  344.     number of both the deposited and the preceding revision.  The exit
  345.     status always refers to the last file checked in, and is 0 if the
  346.     operation was successful, 1 otherwise.
  347.  
  348.     SEE ALSO
  349.     co, ident, rcs, rcsdiff, rcsintro, rcsmerge, rlog, section .
  350.  
  351. dice/co                                                              dice/co
  352.  
  353.     FUNCTION
  354.     Check out RCS Source;
  355.  
  356.     SYNOPSIS
  357.     co [ options ] file ...
  358.  
  359.     DESCRIPTION
  360.     Co retrieves a revision from each RCS file and stores it into the
  361.     corresponding working file.  Each file name ending in ,v is taken to
  362.     be an RCS file; all other files are assumed to be working files.  If
  363.     only a working file is given, co tries to find the corresponding file
  364.     in the RCS directory and then in the current directory.  For more
  365.     details, see the file naming section below.
  366.  
  367.     Revisions of an RCS file may be checked out locked or unlocked.
  368.     Locking a revision prevents overlapping updates.  A revision checked
  369.     out for reading or processing (e.g., compiling) need not be locked.
  370.     A revision checked out for editing and later checkin must normally be
  371.     locked.  Co with locking fails if the revision to be checked out is
  372.     currently locked by another user.  (A lock may be broken with the rcs
  373.     command.)  Co with locking also requires the caller to be on the
  374.     access list of the RCS file, unless he is the owner of the file or
  375.     the superuser, or the access list is empty.  Co without locking is
  376.     not subject to accesslist restrictions, and is not affected by the
  377.     presence of locks.
  378.  
  379.     A revision is selected by options for revision or branch number,
  380.     checkin date/time, author, or state.  When the selection options are
  381.     applied in combination, co retrieves the latest revision that
  382.     satisfies all of them.    If none of the selection options is
  383.     specified, co retrieves the latest revision on the default branch
  384.     (normally the trunk, see the -b option of rcs).  A revision or branch
  385.     number may be attached to any of the options -f, -l, -p, -q, -r, or
  386.     -u. The options -d (date), -s (state), and -w (author) retrieve from
  387.     a single branch, the selected branch, which is either specified by
  388.     one of -f,..., -u, or the default branch.
  389.  
  390.     A co command applied to an RCS file with no revisions creates a
  391.     zero-length working file.  co always performs keyword substitution
  392.     (see below).
  393.  
  394.    -r[rev]  retrieves the latest revision whose number is less than or equal
  395.         to rev.     If rev indicates a branch rather than a revision,
  396.         the latest revision on that branch is retrieved.  If rev is
  397.         omitted, the latest revision on the default branch (see the -b
  398.         option of rcs) is retrieved. rev is composed of one or more
  399.         numeric or symbolic fields separated by ..    The numeric
  400.         equivalent of a symbolic field is specified with the -n option of
  401.         the commands ci and rcs.
  402.  
  403.    -l[rev]  same as -r, except that it also locks the retrieved revision for
  404.         the caller.  See option -r for handling of the revision number
  405.         rev.
  406.  
  407.    -u[rev]  same as -r, except that it unlocks the retrieved revision (if it
  408.         was locked by the caller).    If rev is omitted, -u retrieves the
  409.         latest revision locked by the caller; if no such lock exists, it
  410.         retrieves the latest revision on the default branch.
  411.  
  412.    -f[rev]  forces the overwriting of the working file; useful in connection
  413.         with -q.  See also the section on file modes below.
  414.  
  415.    -p[rev]  prints the retrieved revision on the standard output rather than
  416.         storing it in the working file.  This option is useful when co is
  417.         part of a pipe.
  418.  
  419.    -q[rev]  quiet mode; diagnostics are not printed.
  420.  
  421.     -ddate  retrieves the latest revision on the selected branch whose
  422.         checkin date/time is less than or equal to date.  The date and
  423.         time may be given in free format and are converted to local time.
  424.         Examples of formats for date:
  425.  
  426.         22-April-1982
  427.         17:20-CDT
  428.         2:25 AM
  429.         Dec.  29, 1983
  430.         Tue-PDT, 1981
  431.         4pm Jul 21 (free format)
  432.         Fri, April 16 15:52:25 EST 1982 (output of ctime).
  433.  
  434.         Most fields in the date and time may be defaulted.    co determines
  435.         the defaults in the order year, month, day, hour, minute, and
  436.         second (most to least significant).  At least one of these fields
  437.         must be provided.  For omitted fields that are of higher
  438.         significance than the highest provided field, the current values
  439.         are assumed.  For all other omitted fields, the lowest possible
  440.         values are assumed.  For example, the date "20, 10:30" defaults
  441.         to 10:30:00 of the 20th of the current month and current year.
  442.         The date/time must be quoted if it contains spaces.
  443.  
  444.    -sstate  retrieves the latest revision on the selected branch whose state
  445.         is set to state.
  446.  
  447.  -w[login]  retrieves the latest revision on the selected branch which was
  448.         checked in by the user with login name login.  If the argument
  449.         login is omitted, the caller's login is assumed.
  450.  
  451.  -jjoinlist
  452.         generates a new revision which is the join of the revisions on
  453.         joinlist. Joinlist is a comma-separated list of pairs of the form
  454.         rev2:rev3, where rev2 and rev3 are (symbolic or numeric) revision
  455.         numbers. For the initial such pair, rev1 denotes the revision
  456.         selected by the above options -r, ..., -w.    For all other pairs,
  457.         rev1 denotes the revision generated by the previous pair.  (Thus,
  458.         the output of one join becomes the input to the next.)
  459.  
  460.         For each pair, co joins revisions rev1 and rev3 with respect to
  461.         rev2.  This means that all changes that transform rev2 into rev1
  462.         are applied to a copy of rev3.  This is particularly useful if
  463.         rev1 and rev3 are the ends of two branches that have rev2 as a
  464.         common ancestor.  If rev1 < rev2 < rev3 on the same branch,
  465.         joining generates a new revision which is like rev3, but with all
  466.         changes that lead from rev1 to rev2 undone.  If changes from rev2
  467.         to rev1 overlap with changes from rev2 to rev3, co prints a
  468.         warning and includes the overlapping sections, delimited by the
  469.         lines
  470.  
  471.         <<<<<<<
  472.         rev1
  473.         =======
  474.         rev3
  475.         >>>>>>>
  476.  
  477.         For the initial pair, rev2 may be omitted.    The default is the
  478.         common ancestor.  If any of the arguments indicate branches, the
  479.         latest revisions on those branches are assumed.  The options -l
  480.         and -u lock or unlock rev1.
  481.  
  482.     KEYWORD SUBSTITUTION
  483.     Strings of the form $keyword$ and $keyword:...$ embedded in the text
  484.     are replaced with strings of the form $keyword: value $, where
  485.     keyword and value are pairs listed below.  Keywords may be embedded
  486.     in literal strings or comments to identify a revision.
  487.  
  488.     Initially, the user enters strings of the form $keyword$.  On
  489.     checkout, co replaces these strings with strings of the form
  490.     $keyword: value$. If a revision containing strings of the latter form
  491.     is checked back in, the value fields will be replaced during the next
  492.     checkout.  Thus, the keyword values are automatically updated on
  493.     checkout.
  494.  
  495.     Keyword    : Value
  496.     ===========+=========================================================
  497.     $Author: dice $   : The login name of the user who checked in the revision.
  498.     -----------+---------------------------------------------------------
  499.     $Date: 1994/08/18 05:39:56 $       : The date and time the revision was checked in.
  500.     -----------+---------------------------------------------------------
  501.     $Header: /home/dice/com/master/Doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:39:56 dice Exp dice $   : A standard header containing the full pathname of the
  502.            : RCS file, the revision number, the date, the author,
  503.            : the state, and the locker (if locked).
  504.     -----------+---------------------------------------------------------
  505.     $Id: dice_commands.doc,v 30.8 1994/08/18 05:39:56 dice Exp dice $       : Same as $Header: /home/dice/com/master/Doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:39:56 dice Exp dice $, except more useful. Rather than the
  506.            : full path name as, this leaves just the file name.
  507.     -----------+---------------------------------------------------------
  508.     $Locker: dice $   : The login name of the user who locked the revision
  509.            : (empty if not locked).
  510.     -----------+---------------------------------------------------------
  511.     $Log: dice_commands.doc,v $
  512. # Revision 30.8  1994/08/18  05:39:56  dice
  513. # .
  514. #
  515. # Revision 30.0  1994/06/10  17:57:04  dice
  516. # .
  517. #
  518. # Revision 30.0  1994/06/10  17:57:04  dice
  519. # .
  520. #       : The log message supplied during checkin, preceded by a
  521.            : header containing the RCS file name, the revision
  522.            : number, the author, and the date.    Existing log
  523.            : messages are NOT replaced.  Instead, the new log
  524.            : message is inserted after $Log: dice_commands.doc,v $
  525. # Revision 30.8  1994/08/18  05:39:56  dice
  526. # .
  527. #
  528. # Revision 30.0  1994/06/10  17:57:04  dice
  529. # .
  530. #
  531. # Revision 30.0  1994/06/10  17:57:04  dice
  532. # .
  533. #.  This is useful for
  534.            : accumulating a complete change log in a source file.
  535.     -----------+---------------------------------------------------------
  536.     $RCSfile: dice_commands.doc,v $  : The name of the RCS file without path.
  537.     -----------+---------------------------------------------------------
  538.     $Revision: 30.8 $ : The revision number assigned to the revision.
  539.     -----------+---------------------------------------------------------
  540.     $Source: /home/dice/com/master/Doc/RCS/dice_commands.doc,v $   : The full pathname of the RCS file.
  541.     -----------+---------------------------------------------------------
  542.     $State: Exp $    : State of the revision as set by the -s option of rcs or
  543.            : ci.
  544.     -----------+---------------------------------------------------------
  545.  
  546.     FILE NAMING
  547.     Pairs of RCS files and working files may be specified in 3 ways (see
  548.     also the example section).
  549.  
  550.     1) Both the RCS file and the working file are given.  The RCS file
  551.        name is of the form path1/workfile,v and the working file name is
  552.        of the form path2/workfile, where path1/ and path2/ are (possibly
  553.        different or empty) paths and workfile is a file name.
  554.  
  555.     2) Only the RCS file is given.    Then the working file is created in
  556.        the current directory and its name is derived from the name of the
  557.        RCS file by removing path1/ and the suffix ,v.
  558.  
  559.     3) Only the working file is given.  Then co looks for an RCS file of
  560.        the form path2/RCS/workfile,v or path2/workfile,v (in this order).
  561.  
  562.     If the RCS file is specified without a path in 1) and 2), then co
  563.     looks for the RCS file first in the directory RCS, then in the
  564.     directory contained in the file RCS_LINK, followed by the current
  565.     directory.
  566.  
  567.     EXAMPLES
  568.     Suppose the current directory contains a subdirectory RCS with an RCS
  569.     file io.c,v.  Then all of the following commands retrieve the latest
  570.     revision from RCS/io.c,v and store it into io.c.
  571.  
  572.     co io.c
  573.     co RCS/io.c,v
  574.     co io.c,v
  575.     co io.c RCS/io.c,v
  576.     co io.c io.c,v
  577.     co RCS/io.c,v io.c
  578.     co io.c,v io.c
  579.  
  580.     FILE MODES
  581.     If a file with the name of the working file exists already and has
  582.     write permission, co aborts the checkout if -q is given, or asks
  583.     whether to abort if -q is not given.  If the existing working file is
  584.     not writable or -f is given, the working file is deleted without
  585.     asking.
  586.  
  587.     DIAGNOSTICS
  588.     The RCS file name, the working file name, and the revision number
  589.     retrieved are written to the diagnostic output.  The exit status
  590.     always refers to the last file checked out, and is 0 if the operation
  591.     was successful, 1 otherwise.
  592.  
  593.     SEE ALSO
  594.     ci, ident, rcs, rcsdiff, rcsintro, rcsmerge, rlog, section .
  595.  
  596.     LIMITATIONS
  597.     The option -d gets confused in some circumstances, and accepts no
  598.     date before 1970.  There is no way to suppress the expansion of
  599.     keywords, except by writing them differently.
  600.  
  601.     BUGS
  602.     The option -j does not work for files that contain lines with a
  603.     single ..
  604.  
  605. dice/das                                                            dice/das
  606.  
  607.     FUNCTION
  608.     DICE Assembler
  609.  
  610.     SYNOPSIS
  611.     DAS asmfile [-o objectfile] [-E errorfile] [-nu]
  612.  
  613.     DESCRIPTION
  614.     Das is a minimal 68000 assembler designed to assemble the output of
  615.     dc1.
  616.  
  617.     || NOTE: Das should not be used for assembly projects, it is meant
  618.     || solely to deal with the output from the compiler.  Das supports
  619.     || only a minimal subset of features.
  620.  
  621.  -o objfile
  622.         Specify object file, else writes to asmfile.o.
  623.  
  624.  -E errorfile
  625.         Specify file for errors, else diagnostics are sent to stderr.
  626.  
  627.        -nu  Specify that HUNK_UNIT hunks have no name.    This option is used
  628.         for creating link libraries, to make the library smaller)
  629.  
  630.     SEE ALSO
  631.     Chapter .
  632.  
  633. dice/dc1                                                            dice/dc1
  634.  
  635.     FUNCTION
  636.     DICE Compiler
  637.  
  638.     SYNOPSIS
  639.     DC1 cppd_src_file [-o outfile] options
  640.  
  641.     DESCRIPTION
  642.     DC1 is the compiler itself.  As input it requires a file preprocessed
  643.     by dcpp, and as output it provides assembly code ready for the das
  644.     assembler.  Normally one uses either dcc or VMake as a front end,
  645.     never directly invoking dc1.
  646.  
  647.     The compiler generates absolute-data references and absolute code
  648.     references by default.    Do not confuse this with DCC's default, which
  649.     is small-data and small-code.
  650.  
  651.     The compiler will put argument and auto variables into registers
  652.     according to register availability and usage.  It will use
  653.     A0-A1/D0-D1 for register variables whenever possible.  Consequently,
  654.     the most heavily used variables will be in registers even for very
  655.     large subroutines.
  656.  
  657.     You should get into the habit of declaring automatic variables within
  658.     sub blocks rather than declaring all your autos at the top of the
  659.     procedure. Apart from making the code more modular, this will enable
  660.     the compiler to make better decisions when allocating register
  661.     variables.
  662.  
  663.     DCC does not do any major contents tracking and redundant
  664.     instructions will be generated.  DAS will handle properly optimizing
  665.     branches and DAS has a peephole optimizer built in it to handle other
  666.     obvious redundancies. The compiler does some optimizations itself,
  667.     such as using bit instructions to handle special cases of &, |, and
  668.     ^, include using BTST.
  669.  
  670.     || NOTE: volatile forces a data item NOT to be placed in a register.
  671.     || register is treated as a hint only by the compiler.    const is
  672.     || ignored by default but will force objects into the code section
  673.     || given the -ms or -mS options (see below). Other type and storage
  674.     || qualifiers are described in chapter .
  675.  
  676.     -S
  677. -S0  Set alternate section names "libdata" and "libbss".
  678.  
  679.   -Sd name  Set section name for data sections
  680.  
  681.   -Sb name  Set section name for bss sections
  682.  
  683.   -Sc name  Set section name for code sections
  684.  
  685.   -SD name  Set section name for __far data sections
  686.  
  687.   -SB name  Set section name for __far bss sections
  688.  
  689.         The -S option allows you to modify the default section naming
  690.         conventions.  DICE uses data, text, and bss as defaults for the
  691.         data, code, and bss sections.
  692.  
  693.         The DICE c.lib is compiled with -S and the startup code (c.o)
  694.         references these first to force c.lib's data to come before
  695.         program data.  The data ordering is then as follows:
  696.  
  697.     1) Library Initialized Data
  698.  
  699.     2) Program Initialized Data
  700.  
  701.     3) Library BSS Space
  702.  
  703.     4) Program BSS Space
  704.  
  705.     As long as the program does not declare more than 64KBytes of
  706.     initialized data it can be linked with the small-data model c.lib.
  707.     Thus, large-data-model programs that declare more than 64KBytes of
  708.     BSS space will still link with the small-data-model c.lib
  709.  
  710.     This may be of no consequence because any __far declared data will be
  711.     placed in a different data segment entirely.  Simply declare your
  712.     large arrays as __far and the rest may remain small-data
  713.  
  714.      -d[#]  Set debug mode.  This isn't pretty, it is primarily used for
  715.         diagnosing potential compiler problems.
  716.  
  717.    -E file  specify stderr file, any errors are appended to the file instead
  718.         of to stdout. Useful for batch compiles
  719.  
  720.     -R  Tells the compile to remove (delete) the input file when it no
  721.         longer needs it.  The input file is usually a temporary
  722.         preprocessor file and DCC will use this option to get DC1 to
  723.         delete it as soon as possible.
  724.  
  725.     -proto  The main compiler will generate errors for any unprototyped
  726.         function call.
  727.  
  728.     -r  Resident option.  The main compiler will generate special
  729.         autoinit code to initialize data-data relocations.    This
  730.         simplifies the work that DLink and the startup module must do to
  731.         support residentable programs.
  732.  
  733.     -v  Verbose
  734.  
  735.  -o outfile
  736.         Specify assembly output file name
  737.  
  738.        -mc  Small-code model (DCC default)
  739.  
  740.        -mC  Large-code model (DC1 default)
  741.  
  742.        -md  Small-data model (DCC default)
  743.  
  744.        -mD  Large-data model (DC1 default)
  745.  
  746.        -mw  Absolute-word addressing (overrides -md/-mD)
  747.  
  748.        -ma  Absolute addressing (no effect on DC1 operation)
  749.  
  750.         These options specify the memory model.  The small-code model
  751.         uses PC-relative addressing and the small-data model uses
  752.         A4-relative addressing
  753.  
  754.         -mw is used when making ROMable code and specifies that the
  755.         ABSOLUTE WORD addressing mode be used instead of either absolute
  756.         long or A4-relative.  Absolute word addresses are resolved at
  757.         link time.
  758.  
  759.         || NOTE: This option should not be used when generating
  760.         || executables meant to run on the Amiga.
  761.  
  762.       -ms0  (default) const is ignored
  763.  
  764.        -ms  string constants and const objs placed in code section
  765.  
  766.        -mS  string constants and const objs placed in code section
  767.  
  768.         These options control how const data items are handled, including
  769.         string constants such as char *ptr = "abcd"; The default is to
  770.         ignore the const type qualifier.
  771.  
  772.         If -ms is specified string constants and const data items are
  773.         placed in the code section.  Local references to const data items
  774.         use PC-RELATIVE addressing.  Remote references (from other
  775.         modules) to const data items use ABSOLUTE LONG addressing.
  776.  
  777.         -mS works the same as -ms but remote references are forced to use
  778.         PC-RELATIVE addressing.
  779.  
  780.         || NOTE: This can be dangerous and the final CODE size MUST BE
  781.         || LESS THAN 32KBYTES!
  782.  
  783.         Usually it is safe to use -ms and, in fact, can save a lot of
  784.         memory when combined with -r residentable programs because the
  785.         string constants will not be duplicated for each running instance
  786.         of the program.
  787.  
  788.     SEE ALSO
  789.     dcc, dcpp, dlink
  790.  
  791. dice/dcc                                                            dice/dcc
  792.  
  793.     FUNCTION
  794.     DICE Compiler Front End
  795.  
  796.     SYNOPSIS
  797.     dcc options file file ...
  798.  
  799.     DESCRIPTION
  800.     Dcc is the normal method of using the DICE system from a CLI window.
  801.     Dcc automatically invokes all the other parts of DICE, relieving you
  802.     of learning the grimy details.    Dcc is similar to the UNIX cc
  803.     command.  Many users will prefer to use VMake, the visual interface
  804.     to DICE. See chapter for full documentation.
  805.  
  806.     Dcc options may occur anywhere on the command line but MUST occur
  807.     singly. That is, -c -a instead of -ca.    file arguments to options may
  808.     occur with or without an intervening space.  -oFILE and -o FILE are
  809.     both legal.
  810.  
  811.     Files ending in .a or .asm are assumed to be assembly files.  Files
  812.     ending in .l or .lib are assumed to be library files.  Files ending
  813.     in .o or .obj are assumed to be object files.  All other files are
  814.     assumed to be C source files.
  815.  
  816.     Normally DCC compiles all C source files, assembles all asm files,
  817.     and links the resulting object files with any specified .o files
  818.     together to produce an executable.  The output file may optionally be
  819.     specified with the -o option.  If not specified, a default output
  820.     filename based on the name of the input file is generated.  This
  821.     general action is modified by two options:
  822.  
  823.     -c  DCC does NOT link, -o specifies the output object file
  824.  
  825.     -a  DCC does NOT assemble (i.e.  leaves the .a file resulting from a
  826.         compile).  -o specifies the output assembly file
  827.  
  828.         If neither option is given -o specifies the name of the resulting
  829.         executable.
  830.  
  831.         The default object directory is T: and may be changed with the -O
  832.         option.  The default temporary directory is also T: and may be
  833.         changed with the -T option.  IF YOU HAVE LIMITED MEMORY you may
  834.         have to specify that temporary files not be placed in T: either
  835.         by re-assigning T: or using the -T option.    DICE goes much slower
  836.         if temporary files must be written to a floppy or even a hard
  837.         disk.
  838.  
  839.         ## WARNING: asm files are assembled with DAS, See the assembler
  840.         ## reference if you intend to assemble non-DC1 generated assembly
  841.  
  842.       file  File to compile, assemble (.a), and/or link (.o, .lib)
  843.  
  844.     @@file  containing further list of files, one per line.  (blank lines and
  845.         lines beginning with ';' or '#' are ignored.  File may NOT
  846.         contain further options).
  847.  
  848.    -E file  specify stderr file, any errors are appended to file instead of
  849.         to stdout.    Useful for batch compiles
  850.  
  851.     -c  Compile C source files and assemble into OBJECT files only (do
  852.         not link).
  853.  
  854.     -a  Compile C source files into ASSEMBLY files (do not assemble or
  855.         link).
  856.  
  857.         Keep in mind the DAS will do further optimizations on the
  858.         assembly file that you see.
  859.  
  860.        -l0  Skip linking default libraries (dlib:c.lib dlib:amigas.lib
  861.         dlib:auto.lib), or standard startup (dlib:c.o and dlib:x.o).
  862.  
  863.         :: Beginner's Note: Do not use this option
  864.  
  865.         This option is used in special circumstances, such as when
  866.         generating .libraries or .devices.
  867.  
  868.         ## WARNING: DICE is much more dependent on its startup code (c.o
  869.         ## and x.o) than other compilers, do not link without the startup
  870.         ## unless you know what you are doing.
  871.  
  872.     -l lib  Include this library when linking.    (space is optional)
  873.  
  874.         :: Beginner's Note: Use -lm to link with the math library.  The
  875.         :: math library is required before functions such as printf will
  876.         :: work with floating point.
  877.  
  878.         See chapter   for more information on linking in custom
  879.         libraries.
  880.  
  881.  -3.0  -2.0  -1.3
  882.         Set the compiler to look for libraries and includes in the proper
  883.         place.  Libraries and includes are different for each operating
  884.         system release.  DICE eases compiling for, or using, different OS
  885.         versions.  DICE inserts the revision number into library names
  886.         ("amigas30.lib") and the include file path ("dinclude:amiga30/").
  887.  
  888.  -3.x  -2.x  -1.x
  889.         Like the above options, except x specifies a specific minor OS
  890.         revision.
  891.  
  892.        -L0  remove default library search path, including all explicitly
  893.         specified (-L dir) directories up to this point.
  894.  
  895.     -L dir  add the specified directory to the library search path.  If the
  896.         object module or library can not be found in the current
  897.         directory, directories specified with -L are searched.  -L
  898.         directories are searched before the default library directory
  899.         (DLIB:), assuming it was not removed with -L0 .
  900.  
  901.         Note that the directory path specified by -L is used to search
  902.         for libraries AND object modules.
  903.  
  904.         A trailing '/' is optional
  905.  
  906.        -I0  Remove default include path from search list.  The default
  907.         include path is dinclude: and dinclude:amiga/ (unless modified by
  908.         -1.x and -2.x options)
  909.  
  910.     -I dir  When compiling scan this include directory (space is optional)
  911.         The specified path takes precedence over defaults but defaults
  912.         are NOT removed.
  913.  
  914.  -D define[=value]
  915.         Pre-define a symbol
  916.  
  917.     -U  Undefine __STDC__, mc68000, _DCC, and AMIGA.
  918.  
  919.         :: Beginner's Note: Do not use any of these options
  920.  
  921.  -Houtfile=headerfile
  922.         This option enables precompiled header file generation and
  923.         operation. You may specify any number of -H options.  Example
  924.         usage:
  925.  
  926.         -Ht:defs.m=defs.h
  927.  
  928.         When DICE encounters an #include <defs.h> this will cause it to
  929.         first check for the existence of T:DEFS.M ...  if T:DEFS.M does
  930.         not exist DICE will generate it from <defs.h>.  if T:DEFS.M does
  931.         exist then DICE will use it directly and ignore <defs.h>
  932.  
  933.         You must specify the -H option both to have DICE create the
  934.         precompiled header file and to have DICE use the precompiled
  935.         header file.  Normally one makes operation as transparent as
  936.         possible so as not depend on the option existing when porting to
  937.         other environments.
  938.  
  939.         ## WARNING: A precompiled header file contains the preprocessed
  940.         ## header and preprocessor macros.    These are set in stone!
  941.  
  942.         If you modify a #define that would normally effect preprocessing
  943.         of a header file which is precompiled THE EFFECT WILL NOT OCCUR.
  944.         It is strongly suggested you use precompiled headers ONLY with
  945.         includes that are pretty much unchanging.  For example, the
  946.         commodore includes or otherwise have an appropriate dependency in
  947.         your DMakefile or make script to delete the precompiled header
  948.         file whenever any of your headers are modified.
  949.  
  950.         Normally one has a single -H option that enables precompiling of
  951.         a local header file, say defs.h, which contains #include's of all
  952.         other header files.  Source modules would then #include <defs.h>
  953.  
  954.         :: Beginner's Note: Do not use this option
  955.  
  956.    -o file  Specify output executable, object, or assembly file name
  957.         depending on what you are producing.  The space is optional
  958.  
  959.       -020  Generate code for the 68020 and later microprocessors
  960.  
  961.       -030  Generate code for the 68030 and later microprocessors
  962.  
  963.       -881  Generate inline FFP code for the 68881
  964.  
  965.       -882  Generate inline FFP code for the 68882
  966.  
  967.         :: Beginner's Note: Do not use any of these options
  968.  
  969.         These options exist to produce 020 and 030 opcodes, and 881/882
  970.         inline assembly for floating point operations.
  971.  
  972.        -md  small data model (default) uses A4-relative
  973.  
  974.        -mD  large data model uses absolute-long
  975.  
  976.        -mc  small code model (default) uses PC-relative
  977.  
  978.        -mC  large code model uses absolute-long
  979.  
  980.         :: Beginner's Note: Use only -mD if you declare more than
  981.         :: 64KBytes of data.
  982.  
  983.         These options specify the default data and code model to use.
  984.         The model may be overridden by use of the __near and __far type
  985.         qualifiers on a variable by variable basis.
  986.  
  987.         DICE defaults to the small data and small code model, and is able
  988.         to generate >32KBytes of code using the small code model so you
  989.         should never have to use -mC.  Note that the DICE libraries have
  990.         all been compiled with the small-data model, and certain
  991.         applications may disrupt the base register, A4...  in this case
  992.         use of the __geta4 type qualifier should be of use.  If worse
  993.         comes to worse you can recompile a large-data model c.lib, but I
  994.         suggest you try other solutions first.
  995.  
  996.       -ms0  (default), Only const objects are put into a CODE hunk
  997.  
  998.        -ms  String constants are put into the read-only code hunk
  999.  
  1000.        -mS  String constants are put into the read-only code hunk AND all
  1001.         external const references use NEAR addressing
  1002.  
  1003.         :: Beginner's Note: Use only -ms
  1004.  
  1005.         -ms0 turns off -ms/-mS in case you have it in your DCCOPTS
  1006.         environment variable and want to turn it off.
  1007.  
  1008.         Default operation (no -ms or -mS) puts const items into a
  1009.         read-only CODE hunk.  Locally declared objects are referenced
  1010.         using PC-REL while external objects (declared in some other
  1011.         module) are referenced using 32-BIT ABSOLUTE addressing.
  1012.  
  1013.         -ms will additionally make all string constants, such as "fubar",
  1014.         const and referenced via PC-REL.  -ms is an extremely useful
  1015.         option when you will never modify any of your string constants
  1016.         because the strings are not copied for multiple running instances
  1017.         of the program (if resident).
  1018.  
  1019.         -mS works like -ms, but in addition forces all external const
  1020.         references to use PC-REL addressing INSTEAD of 32-bit absolute
  1021.         addressing.
  1022.  
  1023.         || NOTE: This is a very dangerous option, do not use unless the
  1024.         || final code size is less than 32 kbytes.
  1025.  
  1026.         Using -ms along with -r can result in huge savings of memory due
  1027.         to the string constants being moved out of the data segment
  1028.         (which must be duplicated for each running instance of the
  1029.         program).
  1030.  
  1031.         ## WARNING: In all cases if you declare an object as const it
  1032.         ## must be extern'd as const in other modules or incorrect code
  1033.         ## will be generated.  This is true whether you use -ms/S or not.
  1034.  
  1035.       -mRR  registered arguments, strict
  1036.  
  1037.         This option controls the automatic registerization of procedure
  1038.         arguments.    Only those prototyped procedures declaring 4 or fewer
  1039.         arguments will be registered.  Values are passed in D0/D1/A0/A1
  1040.         according to the type of variable and availability of registers.
  1041.  
  1042.         -mRR generates a single registerized entry point and extends
  1043.         registerization to indirect function calls (that must be fully
  1044.         prototyped).
  1045.  
  1046.         -mRR assigns either the registered or normal entry point to
  1047.         function pointers depending on whether they are prototyped or not
  1048.         (and any calls made through these function pointers will use the
  1049.         registered args method).
  1050.  
  1051.         ## WARNING: -mR cannot be used if you make c.lib calls that take
  1052.         ## call-back functions as arguments.
  1053.  
  1054.         -mr and -mRR CAN be used, however with -mRR you must be careful
  1055.         to supply the registered entry point.
  1056.  
  1057.         ## WARNING: AMIGA.LIB routines that take call-back functions as
  1058.         ## arguments must be given non-registered entry points.
  1059.  
  1060.         Thus if you use -mRR you MUST qualify the procedure or function
  1061.         pointer type specification with __stkargs to entire it has a
  1062.         normal entry point.
  1063.  
  1064.   -mw addr  Used for making romable executables, Do not use to create AMIGA
  1065.         executables
  1066.  
  1067.         :: Beginner's Note: Do not use this option
  1068.  
  1069.         This option is another data model, called the ABSOLUTE-WORD data
  1070.         model.  Source files compiled with this option generate
  1071.         absolute-word data references to access data objects instead of
  1072.         A4-relative or absolute-long.  The base of the data segment must
  1073.         be specified as decimal, 0octal, or 0xHEX.
  1074.  
  1075.         Since absolute-word is used exclusive of A4-relative, the
  1076.         compiler will now use A4 for register variables.  You may NOT mix
  1077.         -mw modules with small-data models.
  1078.  
  1079.         The ROMABLE program is usually run on the executable generated by
  1080.         DLink to generate a ROM.
  1081.  
  1082.   -ma addr  Used for making romable executables, do not use to create Amiga
  1083.         executables
  1084.  
  1085.         :: Beginner's Note: Do not use this option
  1086.  
  1087.         This option specifies to the compiler and linker that the
  1088.         resulting code is intended to be relocated to a permanent data
  1089.         address, that specified by addr in decimal, 0octal, of 0xHEX.
  1090.  
  1091.         Unlike -mw, -ma assumes that the data segment can be placed
  1092.         anywhere.  The ROMABLE program is usually run on the executable
  1093.         generated by DLink to generate a ROM.
  1094.  
  1095.         You may still specify a data model, -md or -mD, to Be with this
  1096.         option.  Unlike -mw, -ma does NOT touch the A4 register and thus
  1097.         may be mixed with the small-data model.  See the section on
  1098.         generating Romable code.
  1099.  
  1100.       -rom  Set up options for generating romable code
  1101.  
  1102.         :: Beginner's Note: Do not use this option
  1103.  
  1104.         Like -l0, -rom disables automatic inclusion of a startup file
  1105.         (you must specify your own) and libraries.    However, x.o is still
  1106.         included to sink any autoinit code.  Your startup code must
  1107.         handle the appropriate model and call autoinit code before
  1108.         calling your program main
  1109.  
  1110.         This option is used to support ROMed firmware, i.e.  non-Amiga
  1111.         executables.  You should never link with c.lib.  Instead, a new
  1112.         library, rom.lib, is available.
  1113.  
  1114.         rom.lib contains no static or global references and thus works
  1115.         with any data model, and only completely self-contained routines
  1116.         are included.  The only data rom.lib uses is stack-based.  All
  1117.         rom.lib routines are completely reentrant, including [v]sprintf()
  1118.         !
  1119.  
  1120.     -proto  Prototype checking and optimizations
  1121.  
  1122.         When this option is used, an ERROR message will be generated for
  1123.         any call that is not prototyped.  This option is useful to ensure
  1124.         that you have properly prototyped routines (when you use
  1125.         prototypes), especially when floats and doubles are passed and
  1126.         indirect function pointers are used (they must be prototyped as
  1127.         well!).
  1128.  
  1129.         In the future this will enable stack-argument optimization.
  1130.         Currently, chars and shorts are extended to long's when pushed
  1131.         onto the stack for a subroutine call.  In the future if the
  1132.         -proto option is used these objects will be pushed as shorts and
  1133.         not extended.
  1134.  
  1135.      -prof  enable profiling for source modules
  1136.  
  1137.     -prof1  same as -prof
  1138.  
  1139.     -prof2  enable profiling for source modules and c*p.lib
  1140.  
  1141.     -prof3  enable profiling for source mods, c*p.lib, and amiga*p.lib
  1142.  
  1143.         Enable profiling.  You may compile some or all your source
  1144.         modules with profiling enabled.  Any -prof* option will enable
  1145.         profiling for compiled source modules.  -prof2 will cause DCC to
  1146.         link with a profiled c*p.lib while -prof3 will cause DCC to link
  1147.         with a profiled c*p.lib and amiga*p.lib (the ultimate).
  1148.  
  1149.         To profile c*.lib and/or amiga*.lib functions the equivalent
  1150.         c*p.lib and amiga*p.lib must exist.  These libraries are most
  1151.         likely lharc'd in DCC2:dlib/ or DCC3:dlib/ but if not, registered
  1152.         users may create any link library from the library source.
  1153.  
  1154.     -r  Make executable residentable with separate CODE & DATA hunks
  1155.  
  1156.        -pr  Make executable residentable w/ no relocation hunks
  1157.  
  1158.        -pi  Make executable NON-residentable w/ no relocation hunks
  1159.  
  1160.         :: Beginner's Note: Just use -r to get residentable executables
  1161.         :: and do not worry about these other options.
  1162.  
  1163.         -pr/-pi generate 'position independent' code also useful for
  1164.         ROMed applications.  NOTE that -pi and -pr force const items to
  1165.         be referenced pc-relative as well, causing -ms and -mS to do the
  1166.         same thing (when combined with -pr/-pi)
  1167.  
  1168.         Code size is limited to 32k bytes when you use -pr or -pi
  1169.  
  1170.         Refer to the RESIDENTABILITY section in Chapter 5 for a
  1171.         discussion of these options
  1172.  
  1173.         || NOTE: You may not make data references within const declared
  1174.         || objects when using the -r/-pr options.
  1175.  
  1176.         This is because the CODE hunk is shared between running instances
  1177.         of the program and these address references would be different
  1178.         between the instances.
  1179.  
  1180.         However, if you are using the -ms option, string constants will
  1181.         be in the code section and thus no problem.
  1182.  
  1183.  -O outdir  Specify directory that is to contain output executable, object,
  1184.         or assembly files (used when specifying multiple source files)
  1185.  
  1186.         -O is useful to tell the compiler where to put the objects when
  1187.         you use dcc to compile and link a whole bunch of files at once.
  1188.         In this case, the -o option can still be used to specify where to
  1189.         put the final executable.
  1190.  
  1191.         || NOTE: The -O name is used as a prefix so if you are specifying
  1192.         || a directory be sure it has a ':' or '/' on the end.
  1193.  
  1194.     -R  If the compile resulted in errors or warnings, execute the ARexx
  1195.         script specified in dcc:config/dcc.config.    This activates the
  1196.         integrated error tracking features of DICE.
  1197.  
  1198.  -T tmpdir  Specify the temporary directory used to hold preprocessed source
  1199.         files and temporary assembly files...  files that will be deleted
  1200.         after use.
  1201.  
  1202.         || NOTE: The -T name is used as a prefix so if you are specifying
  1203.         || a directory be sure it has a ':' or '/' on the end.
  1204.  
  1205.         The default is T:.    This option is useful in low-memory
  1206.         situations where you may decide to put intermediate files
  1207.         elsewhere.    Putting intermediate files on your hard disc or
  1208.         floppy slows down compilation by an order of magnitude, but if
  1209.         you are running on a system with little memory you may not have a
  1210.         choice.
  1211.  
  1212.     -s  Include symbolic debugging information in the executable (dlink
  1213.         option).
  1214.  
  1215.         This option includes the symbol table in the resulting executable
  1216.         and is passed to dlink.  When using DOBJ to disassemble an
  1217.         executable, DOBJ will use the symbol table to generate a more
  1218.         symbolic dump.
  1219.  
  1220.     -S  Alternate section naming op for libraries
  1221.  
  1222.         When making libraries: uses alternate section naming conventions
  1223.         so that all initialized data in the module will be placed before
  1224.         any initialized data in non -S modules (i.e.  normal linked
  1225.         object files).  Any library BSS will be placed before non-library
  1226.         BSS.  Thus, the final ordering in the final executable will be:
  1227.  
  1228.         LIBDATA
  1229.         PROGRAMDATA
  1230.         LIBBSS
  1231.         PROGRAMBSS
  1232.  
  1233.         Thus, if your program contains >64K Bytes of BSS you can still
  1234.         link with a library that tries to reference its own BSS using the
  1235.         small-data model.  If your library declares only initialized data
  1236.         (i.e.  int x = 0; ), then you can link with the library even if
  1237.         your program declares >64KBytes of *initialized* data !
  1238.  
  1239.     -v  Display commands as DCC executes them.
  1240.  
  1241.         -new Checks timestamps for source/destination and only
  1242.         compiles/assembles if object is outdated or does not exist.  Used
  1243.         to make DCC a standalone make.
  1244.  
  1245.     -f  Fast  CTRL-C handling for 1.3
  1246.  
  1247.         This option is used for 1.3 only.  You MUST be using the
  1248.         Commodore shell (NewShell) and if you make programs resident you
  1249.         MUST use the Commodore C:Resident command.
  1250.  
  1251.         This option will probably not work if you use WShell or ARPShell
  1252.         under 1.3.    This option allows DICE to take short cuts to run
  1253.         sub-programs and allows CTRL-C to be propagated to said programs.
  1254.         This option is useful to set permanently in your DCCOPTS ENV:
  1255.         variable if you run under 1.3.  DICE under 2.0 has no such
  1256.         problems and will run sub programs optimally, including
  1257.         propagation of ^C.
  1258.  
  1259.      -frag  FRAGment (linker option).
  1260.  
  1261.         Tell linker not to combine all code hunks together or combine all
  1262.         data hunks together.  Cannot be used if the -r or -mw options are
  1263.         used. Generally only useful if the large-data model is used.  Not
  1264.         entirely supported yet.
  1265.  
  1266.       -ffp  Set fp library for floats
  1267.  
  1268.         :: Beginner's Note: When using single precision floating point
  1269.         :: this option, use of the original ffp libraries, will make the
  1270.         :: program portable across all Amigas.
  1271.  
  1272.         Otherwise only amigas that have the Commodore
  1273.         MathIeeeSing*.library libraries will be able to run the program.
  1274.  
  1275.         If not specified, mathieeesingtrans.library and
  1276.         mathieeesingbas.library are used.  These are new 2.0 libraries
  1277.         that may not exist on all machines yet.
  1278.  
  1279.         If specified, mathtrans.library is used ..    Motorola's FFP float
  1280.         library.
  1281.  
  1282.         || NOTE: IF -ffp is used, be warned that conversion from floats
  1283.         || to doubles and back again is not entirely reliable.
  1284.  
  1285.        -d#  Set debugging level (# = a number), used for compiler diagnostics
  1286.         only.
  1287.  
  1288.    -d opts  Specify any combination of debugging options.  These options may
  1289.         be combined in one -d option.
  1290.  
  1291.         Currently no options are defined.
  1292.  
  1293.        -gs  Generate Dynamic Stack Code.  This generates code on every
  1294.         subroutine call to check available stack.  If available stack
  1295.         falls below 2K a new stack frame is allocated which will be
  1296.         deallocated when the subroutine returns.
  1297.  
  1298.         If the allocation fails, stack_abort() is called.  If this
  1299.         routine is not defined by you, the library stack_abort() will
  1300.         call abort().
  1301.  
  1302.         This option is extremely useful when compiling UNIX code that
  1303.         expects infinite stack.
  1304.  
  1305.      -chip  CHIP force (linker option).
  1306.  
  1307.         Tell linker to force all hunks into CHIP memory.  You should
  1308.         generally not use this option.  Instead, use the __chip keyword
  1309.         for those specific data items that need to be in CHIP memory.
  1310.  
  1311.         || NOTE: CHIP data items are accessed using the large-data model,
  1312.         || thus you cannot create residentable executables that contain
  1313.         || __chip declarations Unless they are also const objects --
  1314.         || read-only.
  1315.  
  1316.      -unix  Causes DICE to use DLIB:uc*.lib instead of DLIB:c*.lib ...    the
  1317.         uc*.lib is exactly the same as the normal c*.lib except that all
  1318.         filenames are assumed to be UNIX names ..  that is, a beginning
  1319.         slash is converted to ':' (root of the current volume), "./" is
  1320.         ignored, and "../" is converted to "/" for all file accesses.
  1321.  
  1322.         This makes porting and usage of UNIX programs easier.
  1323.  
  1324.     -aztec  The front end attempts to run Aztec executables
  1325.  
  1326.  -sas  -lattice
  1327.         Identical.    The front end attempts to run SAS/Lattice executables
  1328.  
  1329.         These options allow one to write a single DMakefile able to
  1330.         handle compilation under any compiler, assuming the source is
  1331.         compilable under any compiler.  These are very limited options
  1332.         and may not work across new versions of Aztec or SAS/C
  1333.  
  1334.        -//  This option enables C++ style // comments.    This form of
  1335.         commenting begins with a // causing it and the remainder of the
  1336.         line to be considered a comment.
  1337.  
  1338.    -no-env  This option disables DCCOPTS.  DCC will not process options in
  1339.         the DCCOPTS environment variable.
  1340.  
  1341.         The ENV:DCCOPTS environment variable may contain additional
  1342.         options.
  1343.  
  1344.         ENV:must exist for DCC to run, even if you do not have a DCCOPTS
  1345.         environment variable.  If you do not use ENV:,assign it to RAM:
  1346.  
  1347.         1> assign env: ram:
  1348.  
  1349.     EXAMPLES:
  1350.     Example #1.  Compile hello.c to create executable "hello.":
  1351.  
  1352.     1> dcc hello.c
  1353.     1> hello
  1354.  
  1355.     Example #2.  Compile hello.c to executable "fish" and put the object
  1356.     file in X:
  1357.  
  1358.     1> dcc hello.c -o ram:fish -TX:
  1359.  
  1360.     Example #3.  Compile hello.c to and object file  in RAM, then link
  1361.     with symbols:
  1362.  
  1363.     1> dcc -c hello.c -o ram:hello.o
  1364.     1> dcc ram:hello.o -o ram:hello -s
  1365.  
  1366.     Example #4.  Compile foo.c and link with an already compiled object
  1367.     file gar.o to produce an executable.  foo.o is placed in T:
  1368.  
  1369.     1> dcc foo.c gar.o -o ram:foogar
  1370.  
  1371.     SEE ALSO
  1372.     das, dc1, dcpp, dlink
  1373.  
  1374. dice/dcpp                                                          dice/dcpp
  1375.  
  1376.     FUNCTION
  1377.     DICE Preprocessor
  1378.  
  1379.     SYNOPSIS
  1380.     dcpp sourcefile [-o outfile] [-I includedir ...] options
  1381.  
  1382.     DESCRIPTION
  1383.     DCPP is a C preprocessor.  C code is first preprocessed, then
  1384.     compiled.  The preprocessing step resolves all # operators, like
  1385.     #define and #include, and generally prepares the C code for
  1386.     compilation.  Most programmers use dcc or VMake, and do not invoke
  1387.     dcpp directly.
  1388.  
  1389.     Dcpp automatically scans DINCLUDE:, DINCLUDE:PD/, and DINCLUDE:AMIGA/
  1390.     .  Any -I option directories are searched in sequence BEFORE dcpp's
  1391.     default search path. The last default directory, DINCLUDE:AMIGA/, may
  1392.     be modified with the -1.3, -2.0 and -3.0 options.
  1393.  
  1394.     Note that DINCLUDE:PD/    is meant to be a place to put public domain
  1395.     header files so as not to clutter the top level DINCLUDE: directory.
  1396.  
  1397.     As with all DCC commands, the space between the option and an
  1398.     associated file/dir argument is optional.
  1399.  
  1400.     The following symbols are defined by default
  1401.  
  1402.     Symbol          : Type        : Usage
  1403.     ==============+=============+=======================================
  1404.     __LINE__      : integer     : Current line number.
  1405.               : constant    :
  1406.     --------------+-------------+---------------------------------------
  1407.     __DATE__      : string        : Current date.
  1408.     --------------+-------------+---------------------------------------
  1409.     __TIME__      : string        : Current time.
  1410.     --------------+-------------+---------------------------------------
  1411.     __FILE__      : string        : Current file.
  1412.     --------------+-------------+---------------------------------------
  1413.     __BASE_FILE__ : string        : Base source file.  Allows an include
  1414.               :         : file to know which C file included it
  1415.     --------------+-------------+---------------------------------------
  1416.     __STDC__      : boolean     : Indicates ANSI compiler.
  1417.     --------------+-------------+---------------------------------------
  1418.     mc68000       : integer     : Indicates Motorola CPU.
  1419.               : constant    :
  1420.     --------------+-------------+---------------------------------------
  1421.     _DCC          : integer     : Indicates the DICE system.
  1422.               : constant    :
  1423.     --------------+-------------+---------------------------------------
  1424.     AMIGA          : integer     : Everyone's favorite computer.
  1425.               : constant    :
  1426.     --------------+-------------+---------------------------------------
  1427.     _FFP_FLOAT    : boolean     : Set if single precision floats are in
  1428.               :         : Fast Floating Point format
  1429.     --------------+-------------+---------------------------------------
  1430.     _SP_FLOAT     : boolean     : Set if single precision floats are in
  1431.               :         : IEEE-SING format (default).
  1432.     --------------+-------------+---------------------------------------
  1433.  
  1434.  -1.x  -2.x  -3.x
  1435.         Selects operating system revision compatibility for the
  1436.         Preprocessor.  If not specified, DCPP searches dinclude:amiga for
  1437.         amiga includes.  If specified, DCPP searches dinclude:amigaNN for
  1438.         the includes.
  1439.  
  1440.         DCC supports this option and passes it along to dcpp.  This
  1441.         allows developers to compile under any OS revision with the flick
  1442.         of an option.  (Note: DCC also sets a different amiga.lib based
  1443.         on these options).
  1444.  
  1445.      -d[#]  This option turns on DCPP debugging
  1446.  
  1447.     -ofile  This option sets the output file, otherwise stdout is used.
  1448.  
  1449.       -ffp  Passed from DCC, tells preprocessor to define _FFP_FLOAT.  If not
  1450.         specified, preprocessor defines _SP_FLOAT.    This exists to better
  1451.         support alternate floating point models in header files.
  1452.  
  1453.  -Dvar[=val]
  1454.         This option predefines a symbol or macro.
  1455.  
  1456.    -E file  specify stderr file, any errors are appended to file instead of
  1457.         to stdout.    Useful for batch compiles
  1458.  
  1459.     -U  This option undefines the following symbols:
  1460.  
  1461.         __STDC__ mc68000 _DCC AMIGA
  1462.  
  1463.  -Hprecomp=header
  1464.         Enable use/creation of precompiled header files.  See chapter for
  1465.         more information.
  1466.  
  1467.         -Ht:defs.m=defs.h
  1468.  
  1469.        -I0  This option causes DCPP to *NOT* include any default directories
  1470.         in the include search list.
  1471.  
  1472.     -I dir  This option adds the specified directory to the include search
  1473.         list.  A hanging slash on the end of the path is not required.
  1474.         The space is optional.
  1475.  
  1476.        -//  Enable C++ style // comments.  The remainder of the line after //
  1477.         is encountered is interpreted as a comment.  This differs from /*
  1478.         style commenting in that no explicit comment-terminator is
  1479.         required.
  1480.  
  1481.     -notri  Disable tri-graph scan pass.  Note that the tri-graph pass is
  1482.         implemented in assembly and does not slow down preprocessing in
  1483.         any noticeable fashion, you should not disable tri-graphs unless
  1484.         you need to.
  1485.  
  1486.     SEE ALSO
  1487.     dcc, dc1
  1488.  
  1489. dice/dd                                                              dice/dd
  1490.  
  1491.     FUNCTION
  1492.     DICE debugger
  1493.  
  1494.     DESCRIPTION
  1495.     dd is a simple symbolic debugger.  dd allows you to single step and
  1496.     display much internal information about the operation of your code.
  1497.     Documentation for dd is in the dcc:doc directory of your DICE
  1498.     installation.
  1499.  
  1500. dice/DICEHelp                                                  dice/DICEHelp
  1501.  
  1502.     FUNCTION
  1503.     Fast Online Help Utility
  1504.  
  1505.     SYNOPSIS
  1506.     DICEHelp searchitem
  1507.  
  1508.     DESCRIPTION
  1509.     DICEHelp can quickly retrieve help on any DICE topic.  From a CLI,
  1510.     simply type your request as above.  From the Workbench, just click on
  1511.     the DICEHelp icon.
  1512.  
  1513.     Within many text editors, "hotkeys" have been established to link
  1514.     with DICEHelp.    A key will either search for information on the word
  1515.     under the cursor, or bring up a box for your selection.  DICEHelp
  1516.     uses a "fuzzy" search, so your never have to worry about getting the
  1517.     correct case or suffix.
  1518.  
  1519.     SEE ALSO
  1520.     Chapter .
  1521.  
  1522. dice/diff,diff3                                              dice/diff,diff3
  1523.  
  1524.     FUNCTION
  1525.     File Compare Utilities
  1526.  
  1527.     SYNOPSIS
  1528.     diff options fileA fileB
  1529.  
  1530.     DESCRIPTION
  1531.     diff is used to compare the contents of two text files. Diff3
  1532.     compares three files.  Lines that are the same in all files are not
  1533.     printed.  Lines that are different are shown with arrows.  Note that
  1534.     the arrow "points" at the file from which the line came:
  1535.  
  1536.     < Lines found in fileA, but not in fileB.
  1537.     > Lines found in fileB, but not in fileA.
  1538.  
  1539. dice/dlink                                                        dice/dlink
  1540.  
  1541.     FUNCTION
  1542.     DICE Linker
  1543.  
  1544.     SYNOPSIS
  1545.     dlink options files libraries
  1546.  
  1547.     DESCRIPTION
  1548.     The final step in creating an Amiga program is linking.  Normally the
  1549.     linker is invoked as needed by dcc or VMake.
  1550.  
  1551.     Options may occur anywhere on the command lines.  Any file ending in
  1552.     .o or .obj is assumed to be an object file.  Any file ending in .l or
  1553.     .lib is assumed to be a library.  Any file name beginning with @@
  1554.     specifies a text file containing a further list of files.
  1555.  
  1556.     File ordering is maintained.  Section ordering is maintained.  All
  1557.     sections of the same name are coagulated together with ordering
  1558.     maintained.
  1559.  
  1560.     || NOTE: Inter-section ordering is not maintained within a library
  1561.     || since library modules are random included.  However, ordering is
  1562.     || maintained *between* libraries.
  1563.  
  1564.     All object files specified are included in the final executable.  All
  1565.     libraries specified are searched at the point they are specified
  1566.     (that is, specifying an object file that references a symbol defined
  1567.     in a library specified BEFORE the object file will cause an undefined
  1568.     symbol error).    Normally an object file is specified after a library
  1569.     to terminate an autoinit or autoexit section.
  1570.  
  1571.     You do not have to order object files within a library, DLink will
  1572.     automatically make as many passes as required to handle all internal
  1573.     library references.  However, ordering object files will make DLink
  1574.     go faster.
  1575.  
  1576.     Symbols defined in object files override symbols defined in
  1577.     libraries. Symbols defined in libraries specified before later
  1578.     libraries override symbols defined in later libraries.    Symbols
  1579.     defined in a library and also defined in a later specified object
  1580.     module causes an error. -o execname name of executable
  1581.  
  1582.     -s  Include symbolic information.
  1583.  
  1584.         || NOTE: if -r is used symbolic info for the data sections will
  1585.         || point to the statically init'd stuff, NOT The actual data
  1586.         || space (in BSS) referenced by the code.  This is a bug.
  1587.  
  1588.      -frag  Fragment output file (default is to coagulate all hunks of the
  1589.         same type regardless of name).  If frag is specified then only
  1590.         hunks of the same type AND name are coagulated.
  1591.  
  1592.         see fragmentation note at bottom
  1593.  
  1594.     -r[es]  Resident link.
  1595.  
  1596.        -pi  Position independent non-residentable (i.e.  only one copy of the
  1597.         data but also no relocation hunks)
  1598.  
  1599.         -pr residentable position independent
  1600.  
  1601.  -Ppostfix  specify library name postfix.  If DLink cannot find the library
  1602.         as specified it will append the postfix and try again.  Used by
  1603.         DCC to specify the memory model.
  1604.  
  1605.   -mw addr  specify absolute data base
  1606.  
  1607.   -ma addr  specify absolute data base
  1608.  
  1609.         Both options do exactly the same thing and are in duplicate to
  1610.         conform to DCC's options.
  1611.  
  1612.   -mw
  1613. -ma   specify the base of data as a decimal, 0octal, or 0xHEX address.
  1614.         You must use the -r option in conjunction with these options.
  1615.  
  1616.         DLink will resolve all Absolute-Word addresses but not all
  1617.         Absolute-Long addresses.  This is left up to the ROMABLE program
  1618.         which generates a raw binary image of the program that can then
  1619.         be transferred to an EPROM.
  1620.  
  1621.         || NOTE: Do not use this option when generating Amiga
  1622.         || executables.
  1623.  
  1624.      -d[#]  debug mode (spews lots of debugging junk out)
  1625.  
  1626.    -E file  specify stderr file, any errors are appended to the file instead
  1627.         of to stdout.  Useful for batch compiles
  1628.  
  1629.      -chip  chip-only - forces all hunks into CHIP memory
  1630.  
  1631.        -L0  remove default library search path, including all explicitly
  1632.         specified (-L dir) directories up to this point.
  1633.  
  1634.     -L dir  add the specified directory to the library search path.  If the
  1635.         object module or library can not be found in the current
  1636.         directory, directories specified with -L are searched.  -L
  1637.         directories are searched before the default library directory
  1638.         (DLIB:), assuming it was not removed with -L0 .
  1639.  
  1640.         Note that the directory path specified by -L is used to search
  1641.         for libraries AND object modules.
  1642.  
  1643.         A trailing '/' is optional
  1644.  
  1645.  -Ppostfix  This allows you to specify -lc -Ps and DLink will automatically
  1646.         look for cs.lib ...  you can specify a postfix that occurs before
  1647.         the .lib in the library name here.    If DLink cannot find the
  1648.         library as it is named by default it will try it with the
  1649.         postfix.
  1650.  
  1651.         DCC uses this to supply the memory model to DLINK also allowing
  1652.         the user to say -lm in DCC and have it find MS.LIB if you are
  1653.         using the small-data model.
  1654.  
  1655.     CREATING A LIBRARY
  1656.     DLink libraries are standard Amiga libraries...  simply join one or
  1657.     more object modules together and rename the result with a .lib
  1658.     extension.
  1659.  
  1660.     LINKER SYMBOLS
  1661.     DLink generates the following special symbols to aid in program
  1662.     startup:
  1663.  
  1664.     Symbol           : Meaning
  1665.     ===============+=====================================================
  1666.     __ABSOLUTE_BAS : Base of data in volatile space.  This symbol is NOT
  1667.                : defined for normal residentable programs since the
  1668.                : base address is not known (must be allocated
  1669.                : run-time)
  1670.     ---------------+-----------------------------------------------------
  1671.     __DATA_BAS     : Base of data in non-volatile space.  This symbol
  1672.                : points to a read-only copy of the initialized data
  1673.                : for a program.  For Non-residentable programs this
  1674.                : is the same as __ABSOLUTE_BAS. For residentable
  1675.                : programs this points to a read-only copy of the
  1676.                : initialized data that the program can duplicate on
  1677.                : startup. For programs linked with an absolute base
  1678.                : address for data this points to the end of the CODE
  1679.                : section.  The ROMABLE program always generates a
  1680.                : ROM copy of the initialized data just after the
  1681.                : CODE section (which startup code must copy into
  1682.                : RAM)
  1683.     ---------------+-----------------------------------------------------
  1684.     __DATA_LEN     : Length of data space is longwords.  i.e.
  1685.                : __DATA_LEN*4 yields the number of bytes of
  1686.                : initialized data.  This is used by startup code to
  1687.                : copy read-only initialized data to volatile space
  1688.                : (residentable and data-absolute programs)
  1689.     ---------------+-----------------------------------------------------
  1690.     __BSS_LEN      : Length of bss space in longwords.  i.e.
  1691.                : __BSS_LEN*4 yields the number of bytes of
  1692.                : uninitialized (BSS) data.  This is used in
  1693.                : combination with __DATA_LEN to allocate the
  1694.                : DATA+BSS space for residentable programs, and clear
  1695.                : the BSS space for non-residentable and
  1696.                : absolute-data-base programs.  The BSS space occurs
  1697.                : after the DATA space unless the -frag option is
  1698.                : used.
  1699.     ---------------+-----------------------------------------------------
  1700.     __RESIDENT5D   : This symbol is set to 0 if the -r option was used
  1701.                : and 1 if the -r option was not used.  If set to 1
  1702.                : (-r option)
  1703.     ---------------+-----------------------------------------------------
  1704.  
  1705.     Programs linked with the -mw or -ma options obviously do not
  1706.     'allocate' their data space since it is predefined.  Most Amiga
  1707.     programmers will never use the -mw or -ma options, by the way.
  1708.  
  1709.     SMALL DATA MODEL
  1710.     The small data model uses A4 relative addressing.  The linker sets up
  1711.     all relative offsets such that A4 must be initialized by startup code
  1712.     the BaseOfInitializedData + 32766 for A4-relative references to
  1713.     access the appropriate address.
  1714.  
  1715.     RESIDENT
  1716.     If the -r options is given then NO BSS SPACE is allocated after the
  1717.     data space...  the startup code MUST allocate a data+bss space as
  1718.     shown above.  DLink will give error messages for any absolute data
  1719.     references that occur (except the __DATA_BAS symbol which must be
  1720.     used to copy the static data to the newly allocated data+bss memory
  1721.     on program startup).
  1722.  
  1723.     DLink will give an error message if any data-data reloco32s exist
  1724.     when you specify the -r option as such relocations would be incorrect
  1725.     when copied to the newly allocated data+bss space.  DC1 understands
  1726.     this and will produce autoinit code to handle any such static data
  1727.     relocations that occur in your C code when the -r option is given to
  1728.     compile a C program.
  1729.  
  1730.     However, DLink does allow data-data relocations to occur if an
  1731.     absolute data base is specified along with the -r option.  This is
  1732.     used only when making ROMABLE code.
  1733.  
  1734.     PC-RELATIVE
  1735.     Because the linker will insert a jump table for PC-RELATIVE
  1736.     references to different hunks (after coagulation) or where the range
  1737.     is larger than +/-32K, data should not be placed into a code segment
  1738.     and be referenced via an external label(pc) unless you are positive
  1739.     the reference is within +/-32K.  This can only happen when
  1740.     referencing between like-named code hunks.  NOTE that the jump table
  1741.     is tagged onto the end of the section the jump(s) occur in and thus
  1742.     you do not want to have any autoinit/autoexit code that might
  1743.     possibly generate a jump table (since the whole idea with autoinit is
  1744.     that the code falls through to other autoinit code until the
  1745.     terminating section in x.o's RTS).
  1746.  
  1747.     Currently dlink cannot handle inter-module PC-RELATIVE references
  1748.     beyond +/-32K (i.e.  when one object file has more than 32K of code).
  1749.     An error will occur.
  1750.  
  1751.     Note that if -frag is used you cannot make PC-RELATIVE calls between
  1752.     sections of differing names ever, or make a program resident.  The
  1753.     -frag option is almost never used on untested.
  1754.  
  1755.     || NOTE: When -frag is specified, the linker will not create a
  1756.     || special combined data+bss hunk (so data and bss can both be
  1757.     || referenced with one base variable).
  1758.  
  1759.     However, when -frag is NOT specified, the linker will stil not
  1760.     necessarily combine ALL data hunks into one big hunk and ALL bss
  1761.     hunks into one big hunk.  Any data or bss hunk with special upper
  1762.     bits set (e.g. to force it into chip) is not combined into these
  1763.     special hunks, and any data or bss hunk whos NAME begins with 'far'
  1764.     (upper or lower case) will also not be considered.
  1765.  
  1766.     EXAMPLE
  1767.     This is what DCC gives the linker to link the program foo.c:
  1768.  
  1769.     dlink dlib:c.o @tmp dlib:x.o -o ram:foo
  1770.  
  1771.     Where tmp contains:
  1772.  
  1773.     foo.o
  1774.     dlib:c.lib
  1775.     dlib:amiga.lib
  1776.     dlib:auto.lib
  1777.  
  1778.     Basically it tells dlink to link the startup code, c.o, then the
  1779.     program object module(s) (foo.o), then c.lib, amiga.lib, and
  1780.     auto.lib, then finally x.o.
  1781.  
  1782.     DCC handles all this for you
  1783.  
  1784.     auto.lib contains autoinit code for certain selected libraries,
  1785.     including the dos.library.  Autoinit code is brought in whenever a
  1786.     given library base symbol has been referenced BUT NOT DEFINED.
  1787.     auto.lib defines the symbol and generates autoinit code to open the
  1788.     library and autoexit code to close the library.  To maintain
  1789.     portability you probably do not want to use this automatic
  1790.     library-opening feature yourself, it is really meant to support
  1791.     certain actions of the DICE library (such as floating point support).
  1792.  
  1793.     x.o terminates the autoinit and autoexit sections with an RTS
  1794.     instruction.  The autoinit and autoexit sections are called from the
  1795.     startup code c.o.
  1796.  
  1797. dice/dmake                                                        dice/dmake
  1798.  
  1799.     FUNCTION
  1800.     Make Utility
  1801.  
  1802.     SYNOPSIS
  1803.     dmake [file]
  1804.  
  1805.     DESCRIPTION
  1806.     Make utilities automate complex compiles.  Makefiles can be
  1807.     considered recipes for complex programs.  Makefiles contain
  1808.     "dependencies," which are rules that say things like "if this header
  1809.     file changes, recompile this C file."
  1810.  
  1811.     The idea with DMake is to provide a powerful make utility through
  1812.     general features rather than specialized hacks.  DMake is governed by
  1813.     a few simple rules that can be combined into incredibly powerful
  1814.     operations.
  1815.  
  1816.     Generally you simply run DMake and have a list of dependencies in
  1817.     your DMakefile which DMake then executes.  The DMakefile may contain
  1818.     three different kinds of lines:
  1819.  
  1820.     1) COMMENTS -- Any line beginning with a '#' is a comment and ignored
  1821.  
  1822.     # This DMakefile generates an executable for fubar
  1823.     # The compiler options are as follows ...
  1824.  
  1825.     1) ASSIGNMENTS -- Any line of the form SYMBOL = ...  is considered an
  1826.        assignment.    Any variable references from within the assignment
  1827.        will be resolved immediately.
  1828.  
  1829.     CFLAGS= -r SRCS= x.c y.c z.c
  1830.  
  1831.     1) DEPENDENCIES: -- A line containing a list of symbols, a colon, and
  1832.        more symbols is assumed to be a dependency.    Note that you cannot
  1833.        have a raw filename with a colon in it as that confuses DMake.
  1834.        Instead, use an ASSIGNMENT variable.
  1835.  
  1836.     Following the dependency line is zero or more command lines --
  1837.     commands to run to resolve the dependency, terminated with a blank
  1838.     line.
  1839.  
  1840.     || NOTE: Not only is a zero-command dependency allowed, it is
  1841.     || sometimes necessary.
  1842.  
  1843.     A particular destination may have only ONE command list so if you
  1844.     have something like
  1845.  
  1846.     a.o : a.c
  1847.  
  1848.     with a command list to compile the source into an object you can also
  1849.     have another dependency such as 'a.o : defs.h' which would NOT have
  1850.     any associated command list.
  1851.  
  1852.     dst1 ...  dstN : src1 ...  srcN command1 command2 ...
  1853.     dst1 ...  dstN : src1 ...  srcN command1 command2 ...
  1854.  
  1855.     Finally, note that a dst* or src* symbol does not need to be a
  1856.     filename.  It is perfectly valid to make up dummy names which are
  1857.     then used as the lhs of a dependency that collects other dependencies
  1858.     together.
  1859.  
  1860.     DEPENDENCIES
  1861.     When declaring dependencies you may use four different forms.  The
  1862.     first form is to have a single destination and several sources.  This
  1863.     is interpreted to mean that ALL the sources must be resolved before
  1864.     the single destination can be resolved via the command list for the
  1865.     dependency.  The special variable, %(left), is set to the dst symbol
  1866.     and the special variable %(right) is set to ALL of the src symbols
  1867.  
  1868.     For example, this form would be used to indicate that an executable
  1869.     depends on all the objects being resolved before you can run the
  1870.     link.
  1871.  
  1872.     dst : src1 src2 src3 ...  srcN
  1873.  
  1874.     The second form is the most useful in that it allows you to specify
  1875.     multiple 1 : 1 dependencies.  Thus, you can specify, for example,
  1876.     that each object file depends on its source file counterpart for ALL
  1877.     the files in your project on a single line and have a single command
  1878.     list representing what to do (to compile a source file into an
  1879.     object, say).
  1880.  
  1881.     In this case %(left) and %(right) are set to each dst* : src* pair
  1882.     individually and the command list is run for any individual pair that
  1883.     is out of date.
  1884.  
  1885.     dst1 dst2 dst3 ...  dstN : src1 src2 src3 ...  srcN
  1886.  
  1887.     The next form may be used to specify that many files depend on one
  1888.     file being resolved.  An example of usage would be to make all the
  1889.     object files depend on one header file.  The command list, if any, is
  1890.     run for each dst* : src pair with %(left) set to the current dst* and
  1891.     %(right) set to the single source.
  1892.  
  1893.     dst1 dst2 dst3 ...  dstN : src
  1894.  
  1895.     The last form is esoteric but sometimes useful.  EACH dst* on the
  1896.     left hand side depends on the entire right hand side.  You can have
  1897.     an arbitrary number of symbols on either side.    %(left) will be set
  1898.     to a particular DST while %(right) will be set to all of the SRCs.
  1899.  
  1900.     for example, you could specify $(OBJS) :: $(HDRS) -- make all objects
  1901.     depend on all headers causing a recompile to occur if any header is
  1902.     modified.
  1903.  
  1904.     dst1 dst2 dst3 ...  dstN :: src1 src2 ...  srcI
  1905.  
  1906.     WILDCARDS
  1907.     DMake's most powerful feature is an easy to use file list replacement
  1908.     through options in a variable specification.  You may insert the
  1909.     contents of any variable using the form:
  1910.  
  1911.     $(SYMBOL)
  1912.  
  1913.     Furthermore, you can make modifications to the contents of the
  1914.     variable on the fly using:
  1915.  
  1916.     $(SYMBOL:wildcard)
  1917.  
  1918.     only those files which match wildcard
  1919.  
  1920.     $(SYMBOL:wildcard:wildcard)
  1921.  
  1922.     matching files and also do a conversion
  1923.  
  1924.     Simple */? wildcarding is used.  A wildcard may contain a colon or
  1925.     other punctuation but if it does you MUST surround it with quotes.
  1926.     Here is a quick example:
  1927.  
  1928.     SRCS= a.c b.c c.c d.c xx.a
  1929.     OBJS= $(SRCS:*.c:"dtmp:%1.o")
  1930.  
  1931.     all: echo $(OBJS)
  1932.  
  1933.     Will Produce
  1934.  
  1935.     dtmp:a.o dtmp:b.o dtmp:c.o dtmp:d.o
  1936.  
  1937.     The first wildcard specification restricts which files from the list
  1938.     are to be taken -- 'xx.a' was ignored, as you can see.  Each '*' or
  1939.     '?' in the first wildcard specification corresponds to %N
  1940.     specifications in the second wildcard specification.  You can
  1941.     prepend, insert, or append text and freely mix or ignore items
  1942.     matched to create your destination file list.
  1943.  
  1944.     This capability allows you to specify your source files EXACTLY ONCE
  1945.     in the DMakefile and then use the file munging capability to convert
  1946.     them to the object file list, etc...
  1947.  
  1948.     You can embed variables within variables as with the following
  1949.     example (note that this time xx.a is included):
  1950.  
  1951.     OD= dtmp:fubar/
  1952.     SRCS= a.c b.c c.c d.c xx.a
  1953.     OBJS= $(SRCS:*.?:"$(OD)%1.o")
  1954.  
  1955.     all: echo $(OBJS)
  1956.  
  1957.     Will produce
  1958.  
  1959.     dtmp:fubar/a.o dtmp:fubar/b.o dtmp:fubar/c.o
  1960.     dtmp:fubar/d.o dtmp:fubar/xx.o
  1961.  
  1962.     As a side note, you may also specify '?' and '*' in the destination
  1963.     wildcard.  These are considered dummies and are equivalent to %N
  1964.     where N is incremented from 1..9 for each '?' or '*' encountered.
  1965.  
  1966.     You can use the capability anywhere in the DMakefile.  Another common
  1967.     thing to do is restrict your link line to include only the object
  1968.     files and skip the headers:
  1969.  
  1970.     $(EXE) : $(PROTOS) $(OBJS) $(HDRS)
  1971.     dcc %(right:*.o) -o %(left)
  1972.  
  1973.     ENVIRONMENT VARIABLES
  1974.     2.0 local variables and 1.3/2.0 ENV: variables are fully accessible.
  1975.     Under 2.0 you can also modify local variables on the fly.
  1976.     DMake-specific variables override 2.0 local variables override ENV:
  1977.     variables.
  1978.  
  1979.     Under 2.0, any command containing <, >, `, or |, or is an alias, will
  1980.     be run with System().  Thus, such commands may not be used to modify
  1981.     local variables or the local environment.  Also, such commands cannot
  1982.     be ^C'd due to the way AmigaDOS works.
  1983.  
  1984.     EXAMPLE
  1985.     The following is an example dmakefile.    The variable $(FILES) is set
  1986.     to "main input output".  The next two variables are constructed from
  1987.     $(FILES).  The command $(FILES:*:"*.c") tells dmake to take $(FILES),
  1988.     look up each item ":*", and append two characters ":*.c".  The
  1989.     results of the conversions are listed above.  This unique feature of
  1990.     dmake makes for very elegant DMakeFiles.
  1991.  
  1992.     The first rule is the default rule, executed if you just type dmake.
  1993.     The rule, "sample:", states that the resulting program, "sample", is
  1994.     made up from the files listed in $(FILE_OBJECTS). If the date on
  1995.     "sample" is older than any dates in $(FILE_OBJECTS), the rule will
  1996.     execute.
  1997.  
  1998.     In turn, the next rule states that $(FILE_OBJECTS) ("main.o input.o
  1999.     output.o") are made from $(FILE_SOURCES) ("main.c intput.c
  2000.     output.c").  If any of the .o files are older than the corresponding
  2001.     .c file, the rule executes.
  2002.  
  2003.     In short, the makefile is a description of how source files inter
  2004.     depend.  When any file changes, dmake figures the minimum number of
  2005.     steps to regenerate the final result.  If you change just "input.c",
  2006.     only "input.c" will recompile.
  2007.  
  2008.     The last rule, "clean:", has no dependencies (nothing on the right
  2009.     side of the :).  When executed, this rule deletes all the
  2010.     compiler-generated files, but not the source code. To execute this
  2011.     rule, type "dmake clean".  Any number of rules may exist in a single
  2012.     DMakeFile.
  2013.  
  2014.                       :     DMakeFile - generic
  2015.     ------------------------------+-------------------------------------
  2016.     FILES = main input output     : Equals "main input output" Set to
  2017.     FILE_SOURCES =              : "main.c input.c output.c" Set to
  2018.     $(FILES:*:*.c") FILE_OBJECTS  : "t:main.o t:input.o t:output.o"
  2019.     = $(FILES:*:"t:*.o)           :
  2020.     ------------------------------+-------------------------------------
  2021.     sample: $(FILE_OBJECTS)     dcc  : Rule: sample is made from
  2022.     $(FILE_OBJECTS) -o sample     : FILE_OBJECTS (defined above as
  2023.                       : "t:main.o t:input.o t:output.o")
  2024.     ------------------------------+-------------------------------------
  2025.     $(FILE_OBJECTS) :          : Rule: FILE_OBJECTS are made from
  2026.     $(FILE_SOURCES)     dcc -c         : FILE_SOURCES (see above).
  2027.     %(right) -o %(left)          :
  2028.     ------------------------------+-------------------------------------
  2029.     clean:              delete  : Rule: "dmake clean" executes this
  2030.     $(FILES) $(FILE_OBJECTS)      : delete command.
  2031.     ------------------------------+-------------------------------------
  2032.  
  2033.     LINE CONTINUATION AND ESCAPES
  2034.     Any line may be continued by terminating it with a backslash '\'.  It
  2035.     is possible to escape the special characters '$' and '%' by doubling
  2036.     them though this is only necessary if an open-parenthesis follows the
  2037.     '$' or '%' and you do not want it interpreted as a variable.
  2038.  
  2039.     It is possible to escape ':' and other special characters by
  2040.     assigning them (or a string containing them) to a variable
  2041.  
  2042.     COMMAND SHELL
  2043.     Under 2.0 commands that do not contain any sort of redirection are
  2044.     run with RunCommand().    If a command is an alias or there is some
  2045.     sort of redirection in the arguments it will be run with System().
  2046.  
  2047.     Under 1.3 everything is run with Execute()
  2048.  
  2049.     ADVANCED CAPABILITIES
  2050.     Now, you may have noted earlier that I said you could not have any
  2051.     given left-hand-side with more then one command list.  Take, for
  2052.     example:
  2053.  
  2054.     a.o : a.c dcc %(right) -o %(left)
  2055.  
  2056.     a.o : defs.h <--- illegal to put command list here
  2057.  
  2058.     Actually, it isn't illegal.  When DMake encounters a dependency
  2059.     without a command list it will automatically 'force' the next higher
  2060.     level dependency of the same left-hand-side.  Therefore if you do not
  2061.     have a command list for the lower level left-hand-side things work as
  2062.     you expect.  Note that this requires all such null dependencies to
  2063.     exist AFTER the one that has the command list.
  2064.  
  2065.     If you do have two or more command lists for the same left-hand-side
  2066.     they will run independent of each other according to their individual
  2067.     right hand sides.  If several command lists apply then their order of
  2068.     execution will be bottom-up
  2069.  
  2070.     TEST FOR EXISTENCE
  2071.     Another advanced feature quite useful in fully automating the
  2072.     compilation process is the ability to create a directory tree on the
  2073.     fly.  That is, if you have a projects called 'fubar' and want the
  2074.     objects to go into the directory DTMP:fubar/ you might want to have a
  2075.     dependency that creates DTMP:fubar if it does not already exist.
  2076.  
  2077.     XX= dtmp:fubar
  2078.     $(XX) : $(XX) makedir %(left)
  2079.  
  2080. dice/dme                                                            dice/dme
  2081.  
  2082.     FUNCTION
  2083.     Editor
  2084.  
  2085.     SYNOPSIS
  2086.     Dme file
  2087.  
  2088.     DESCRIPTION
  2089.     Dme is a full screen programmable editor.  See chapter for complete
  2090.     documentation.
  2091.  
  2092. dice/dobj                                                          dice/dobj
  2093.  
  2094.     FUNCTION
  2095.     Disassemble objects, executables, or Libraries
  2096.  
  2097.     SYNOPSIS
  2098.     DOBJ object_files [-o outfile] [-nd] [-nc] [-d[#]]
  2099.  
  2100.     DESCRIPTION
  2101.     DOBJ disassembles object modules and libraries into assembly.  DOBJ
  2102.     is useful for, say, finding bugs in an assembler.  Most DICE users
  2103.     will use DOBJ to browse through libraries and object modules, and
  2104.     perhaps to check DAS optimizations...  for example, branch
  2105.     optimizations will show up in disassembled object modules that are
  2106.     not otherwise apparent by looking at assembly output (DCC -a).
  2107.  
  2108.     DOBJ generates output to the console unless the -o option is used.
  2109.     The -d option is for debugging the DOBJ program itself and not
  2110.     normally used.
  2111.  
  2112.  -o filename
  2113.         redirect output
  2114.  
  2115.      -d[#]  Set debug level
  2116.  
  2117.        -nd  Do not show actual data, only display symbol names
  2118.  
  2119.        -nc  Do not disassemble actual code, only display symbol names
  2120.  
  2121.         DOBJ will replace hunk/offset references with symbol names when
  2122.         possible to yield a more readable output, and interprets each
  2123.         hunk according to its type (CODE, DATA, or BSS).
  2124.  
  2125.         There is NO limit to the size of the object file that may be
  2126.         disassembled, but it should be noted that DOBJ can take a while
  2127.         to resolve a large object file's symbols so be patient.  DOBJ
  2128.         does not take up much memory run-time, even when disassembling
  2129.         large object modules.
  2130.  
  2131.         ## WARNING: DOBJ does not does not understand any 68020/030
  2132.         ## instructions yet.
  2133.  
  2134. dice/dprof                                                        dice/dprof
  2135.  
  2136.     FUNCTION
  2137.     Code Profiler
  2138.  
  2139.     SYNOPSIS
  2140.     DPROF proffile [-call]
  2141.  
  2142.     DESCRIPTION
  2143.     This utility allows you to discover where time is used in your
  2144.     program.  Careful analysis of the output can help you focus on areas
  2145.     of your code that would be most valuable to optimize.
  2146.  
  2147.     DPROF generates profiling output from the binary data file generated
  2148.     by an executable which was compiled with profiling enabled.
  2149.  
  2150.     In order to use DPROF you must compile your program with the -prof
  2151.     option.  There are three levels of profiling:
  2152.  
  2153.     Dcc Option : Effect
  2154.     ===========+=========================================================
  2155.     -prof1       : Profile only your code
  2156.     -----------+---------------------------------------------------------
  2157.     -prof2       : Profile your code and the standard C library
  2158.     -----------+---------------------------------------------------------
  2159.     -prof3       : Profile your code, the C library, and the Amiga library
  2160.            : tags
  2161.     -----------+---------------------------------------------------------
  2162.  
  2163.     To use -prof2 you must have installed DLIB:CSP.LIB (small data
  2164.     profiled c.lib) or DLIB:CSRP.LIB (small data profiled c.lib for
  2165.     registered arguments).
  2166.  
  2167.     To use -prof3 you must have installed DLIB:AMIGASP20.LIB (small data
  2168.     profiled amiga.lib) or DLIB:AMIGASRP20.LIB (small data profiled
  2169.     amiga.lib for registered arguments).
  2170.  
  2171.     USAGE
  2172.  
  2173.     ## WARNING: The profiling code is accurate to 20 microseconds under
  2174.     ## 2.0, 1/60 second under 1.3.    The profiling code itself will slow
  2175.     ## down a program by quite a bit but, in general, the system makes
  2176.     ## every attempt to filter out its profiling overhead in the
  2177.     ## statistics file (so the grand total time will be less then the
  2178.     ## actual amount of time the program took to run).
  2179.  
  2180.     Note, however, that the results will be skewed somewhat anyway, not
  2181.     only due to the overhead of the profiling code, but also due to task
  2182.     switches and other system overhead.  To get accurate results you
  2183.     should only run the executable that is to generate a .dprof file on
  2184.     an unloaded system (i.e.  don't do anything else while the executable
  2185.     is running).  Many calls to very short, quick routines will suffer
  2186.     the most and numbers should be taken more in a qualitative fashion
  2187.     than a quantitative fashion.
  2188.  
  2189.     Keep in mind that it is not necessary to profile everything,
  2190.     particularly for large projects.  You may want most of the system to
  2191.     run at full speed while only profiling a small part of it at a time.
  2192.  
  2193.     EXAMPLE
  2194.     Given a program called example.c (you can clip this from the online
  2195.     help and compile it):
  2196.  
  2197.     void fubar1(void);
  2198.     void fubar2(void);
  2199.     void loop(long);
  2200.  
  2201.     main(ac, av)
  2202.     char *av[];
  2203.     {
  2204.        short i;
  2205.        for (i = 0; i < 100; ++i)
  2206.        {
  2207.           fubar1();
  2208.           fubar2();
  2209.        }
  2210.        loop(10);
  2211.        fubar1();
  2212.        fubar2();
  2213.     }
  2214.  
  2215.     void fubar1()
  2216.     {
  2217.        short j;
  2218.        for (j = 0; j < 10000; ++j);
  2219.        fubar2();
  2220.     }
  2221.  
  2222.     void fubar2()
  2223.     {
  2224.        short j;
  2225.        for (j = 0; j < 100; ++j);
  2226.     }
  2227.  
  2228.     void loop(n)
  2229.     {
  2230.        if (n)
  2231.           loop(n - 1);
  2232.     }
  2233.  
  2234.     Compile and the run the program, then dump the profile.  the DPROF
  2235.     program automatically appends  '.dprof' onto the filename you
  2236.     specify.
  2237.  
  2238.     1> dcc test.c -o test -prof1
  2239.     1> test
  2240.     1> dprof test
  2241.  
  2242.  
  2243.     @@($)DPROF V2.06.01  Sep 30 1991     test.dprof
  2244.  
  2245.     GrandTotal:   539.53 mS
  2246.  
  2247.     **** BY ROUTINE ****
  2248.     _main    calls=1      total=  539.53 mS (100.00%) local=   10.37 mS (
  2249.      1.92%)
  2250.     _fubar1 calls=101    total=  517.45 mS ( 95.90%) local=  507.75 mS (
  2251.      94.10%)
  2252.     _fubar2 calls=202    total=   20.44 mS (  3.79%) local=   20.44 mS (
  2253.      3.79%)
  2254.     _loop    calls=11     total=    0.96 mS (  0.17%) local=    0.96 mS (
  2255.     0.17%)
  2256.  
  2257.     The total numbers are time spent in the function.  The local numbers
  2258.     are the same, except time spent calling other profiled subfunctions
  2259.     have been subtracted out.
  2260.  
  2261.     **** BY PARENT ****
  2262.     _fubar2 calls=202    total=   20.44 mS
  2263.         From _fubar1 calls=101    total=    9.69 mS ( 47.43%)
  2264.     From _main   calls=101      total=   10.75 mS ( 52.56%)
  2265.  
  2266.     This section shows who called the function, how many times, and how
  2267.     long that took.
  2268.  
  2269.     **** COMBINED CALL TREE ****
  2270.     _main    calls=1     tot=  539.53 (100.00)  loc=   10.37 (  1.92)
  2271.         _fubar1 calls=101    tot=  517.45 ( 95.90)  loc=  507.75 ( 94.10)
  2272.         _fubar2 calls=101    tot=   10.75 (    1.99)  loc=   10.75 (  1.99)
  2273.     _loop    calls=1     tot=    0.96 (  0.17)  loc=    0.08 (  0.01)
  2274.  
  2275.     The top line contains the same information from table 1.  Here main()
  2276.     calls fubar1() 101 times, fubar1() takes 517 mS total time over these
  2277.     calls. Also,  main() calls fubar2() directly 101 times and fubar2()
  2278.     takes 10 mS over these calls.  Note that fubar2()'s time is not the
  2279.     same as in table 1 because only those calls made from main() are
  2280.     counted here.  Percentages are relative to main().  The profiled data
  2281.     includes the entire call tree but for simplicity, recursive calls are
  2282.     simply shown with <SELF>.
  2283.  
  2284.      -call  You can request DPROF to print out the entire call tree.  This is
  2285.         done by adding the -call option to dprof.  Note, however, that
  2286.         this option may result in a huge amount of data printed out.  On
  2287.         the other hand, sometimes the data is quite useful especially
  2288.         when tracing subroutine stacking and other things.
  2289.  
  2290. dice/dsearch                                                    dice/dsearch
  2291.  
  2292.     FUNCTION
  2293.     Search for string in a file
  2294.  
  2295.     SYNOPSIS
  2296.     Dsearch string files
  2297.  
  2298.     DESCRIPTION
  2299.     Dsearch is used for searching for a string in a series of files.
  2300.     Wildcards are accepted.
  2301.  
  2302. dice/du                                                              dice/du
  2303.  
  2304.     FUNCTION
  2305.     Show Disk usage
  2306.  
  2307.     SYNOPSIS
  2308.     du path
  2309.  
  2310.     DESCRIPTION
  2311.     Du stands for "disk-usage".  This program returns disk space used by
  2312.     a directory or volume.    It attempts to account for all blocks used by
  2313.     a file, but the numbers are only estimates.
  2314.  
  2315.     ## WARNING: The results of the DU command will vary depending on the
  2316.     ## filesystem installed on the device.    This is especially noticable
  2317.     ## when DU is used on files in RAM:, as under 2.0 and abover the
  2318.     ## ram-handler packs multiple file headers and datablocks together.
  2319.  
  2320. dice/dupdate                                                    dice/dupdate
  2321.  
  2322.     FUNCTION
  2323.     Distribution Maker
  2324.  
  2325.     SYNOPSIS
  2326.     DUPDATE dist-file dest-dir [options] [DISTFILE distfilename]
  2327.  
  2328.     DESCRIPTION
  2329.     DUPDATE is a program that creates distributions.  It creates an exact
  2330.     duplicate of the source directory tree in the destination with
  2331.     modifications according to control files in the tree.  DUPDATE
  2332.     deletes files in the destination tree that do not exist in the source
  2333.     and updates files from the source into the destination tree that have
  2334.     been modified since the last dupdate (or copies them fresh if they do
  2335.     not exist).
  2336.  
  2337.      FORCE  DUPDATE will not ask permission to copy a fresh file
  2338.  
  2339.      QUIET  DUPDATE will not display verbose output
  2340.  
  2341.      NODEL  DUPDATE will not delete files in the destination that do not
  2342.         exist in the source.
  2343.  
  2344.  DISTFILE file
  2345.         Specify alternate control file that 'modifies' the dist update,
  2346.         default is .DistFiles
  2347.  
  2348.         If a file ".DistFiles" exists in any directory of the source
  2349.         tree, updating of the destination is modified according to the
  2350.         file.  This is a text file which may specify additional
  2351.         files/directories to add to the destination directory (pulled
  2352.         from other random places), files and directories NOT to include
  2353.         in the destination tree, or a list of specific files to include
  2354.         (where files not listed are not included).
  2355.  
  2356.         By using the DISTFILE file option you can generate different
  2357.         distributions for different purposes all based in the same source
  2358.         tree.  For example, I have a DISTFILE set to create the
  2359.         registered and non-registered DICE distributions and other
  2360.         DISTFILE files (using different names) to create the three
  2361.         floppies in the registered distribution.
  2362.  
  2363.         In the first format, if the ONLY keyword is specified after the
  2364.         first file name only these files / sub-directories will be
  2365.         included from this directory.  No other files will be copied
  2366.  
  2367.         file_or_dir_name ONLY
  2368.         file_or_dir_name
  2369.         file_or_dir_name
  2370.         file_or_dir_name
  2371.         file_or_dir_name
  2372.  
  2373.         The second format allows files/directories to be made part of the
  2374.         destination tree that do not necessarily exist in the current
  2375.         directory. Additionally, specific files/directories that do exist
  2376.         in the current directory can be excluded.  Any file/dir not
  2377.         explicitly unincluded using the 'no' keyword will be copied.
  2378.  
  2379.         file_or_dir_path
  2380.         file_or_dir_path
  2381.         file_or_dir_path
  2382.         no file_or_dir_path
  2383.         no file_or_dir_path
  2384.         file_or_dir_path
  2385.  
  2386. dice/expand                                                      dice/expand
  2387.  
  2388.     FUNCTION
  2389.     expand wildcards
  2390.  
  2391.     SYNOPSIS
  2392.     expand [format] wildcards
  2393.  
  2394.     DESCRIPTION
  2395.     Expand functions like the AmigaDOS 2.0 "LIST LFORMAT" command, Expand
  2396.     generates a list of files, one per line, using the specified format
  2397.     string (the default is "%s").
  2398.  
  2399.     1 expand "type %s" #?
  2400.  
  2401.     The above would create one "type" command for every file in the
  2402.     current directory.
  2403.  
  2404. dice/fdtolib                                                    dice/fdtolib
  2405.  
  2406.     FUNCTION
  2407.     Create Link Libraries from .FD files
  2408.  
  2409.     SYNOPSIS
  2410.     FDTOLIB files/wildcard.fd [-h hdrfile] -o libname [-mr] [-mD]
  2411.  
  2412.     DESCRIPTION
  2413.     FDTOLIB will create an amiga standard link library out of specified
  2414.     .FD files (for example, you can generate most of amiga.lib by using
  2415.     the .FD files on your 1.3 Extras disk).  .FD files are a standard
  2416.     format file that describe the function names and offsets of shared
  2417.     Amiga (Exec) libraries.  See section for a description of the format.
  2418.     fdtolib creates the interface stubs and the AutoInit code used by
  2419.     DICE to automatically open and close the library.
  2420.  
  2421.     Basically, FDTOLIB will generate one of four types of libraries:
  2422.  
  2423.      Option  : Library Type
  2424.      ========+=========================================================
  2425.      default : small-data model
  2426.      --------+---------------------------------------------------------
  2427.      -mD     : large-data model
  2428.      --------+---------------------------------------------------------
  2429.      -mr     : small-data model + DICE registered parameters entry pts
  2430.      --------+---------------------------------------------------------
  2431.      -mr -mD : large-data model + DICE registered parameters entry pts
  2432.      --------+---------------------------------------------------------
  2433.  
  2434.     If -mr is used suitable prototypes must be specified with the -h
  2435.     option. In this case, FDTOLIB will run DCC with a special option to
  2436.     have it generate a register-specification file for it to match up
  2437.     again the .FD files.
  2438.  
  2439.     FDTOLIB then proceeds to scan the .FD files, creating temporary
  2440.     assembly files in T: and assembling them with DAS, then appending
  2441.     them to
  2442.  
  2443.     the output library and deleting the scratch files.  This step occurs
  2444.     for each function in each .FD files.
  2445.  
  2446.     (For faster operation, you will want to make DAS resident for the
  2447.     duration)
  2448.  
  2449.     If -mr was specified, FDTOLIB only generates library entries for
  2450.     those routines for which a prototype exists.  At the end of the run
  2451.     FDTOLIB will report any routines which existed in the .FD files but
  2452.     did not have a prototype.
  2453.  
  2454.     files/wildcard.fd specifies one or more files and/or AmigaDOS
  2455.     wildcarding that represents the .FD files that are to be processed
  2456.     into a library
  2457.  
  2458.  -h hdrfile
  2459.         hdrfile is a .H files that #include's all prototypes associated
  2460.         with the .FD files.  It is only used if the -mr option is
  2461.         specified
  2462.  
  2463.  -o libname
  2464.         specify output library name
  2465.  
  2466.        -mr  specify that a REGISTERED call interface library is to be
  2467.         generated (for DICE -m[r,R,RR] options), else generates a normal
  2468.         stack-args interface library.
  2469.  
  2470.        -mD  specify large-data model, else small-data model
  2471.  
  2472.  -I include-dir
  2473.         passed to DCC
  2474.  
  2475.  -p prefix  Set prefix (currently only for standard generation, doesn't work
  2476.         with -mr).    The default is a single underscore _.
  2477.  
  2478.      -prof  Generate profiling code for the tags.  This will cause all
  2479.         library calls to be profiled when the program that links with
  2480.         this library is run.
  2481.  
  2482.  -auto library
  2483.         Generate auto-init code for library after the tags.  library is
  2484.         the name of the shared library.  For example, -auto fubar.library
  2485.  
  2486.  -AUTO library
  2487.         Generate ONLY auto-init code for library (do not generate tags)
  2488.  
  2489.     SEE ALSO
  2490.     fdtopraga for a description of .fd file format.
  2491.  
  2492. dice/fdtopragma                                              dice/fdtopragma
  2493.  
  2494.     FUNCTION
  2495.     Create #pragma statements from .FD files
  2496.  
  2497.     SYNOPSIS
  2498.     fdtopragma source/ [-o dest]
  2499.  
  2500.     fdtopragma
  2501.     This program generates header files containing #pragma libcall lines
  2502.     for use with inline library calls.  #pragma is an ANSI C mechanism to
  2503.     allow compiler extensions.  #pragma libcall is an Amiga standard for
  2504.     describing shared library entries, allowing the compiler to generate
  2505.     calls directly, rather than requiring linking in cumbersome interface
  2506.     functions.  .FD files are a standard format file that describe the
  2507.     function names and offsets of shared runtime libraries. See section
  2508.     for a description of the format.
  2509.  
  2510.     The source may be specified as a single file, or as a directory (with
  2511.     trailing /).  Under DICE, these header files are stored in
  2512.     DINCLUDE:CLIB/ and mimic the Commodore standard headers in
  2513.     DINCLUDE:AMIGA20/CLIB/.  The purpose of the mimicry is to have a
  2514.     single standard for specification of prototypes, the Commodore
  2515.     standard:
  2516.  
  2517.     #include <clib/exec_protos.h>
  2518.  
  2519.     If no pragma header exists, the Commodore standard header will be
  2520.     included. If a pragma header does exist, it will be included.  Rhe
  2521.     pragma header file explicitly #include's the original Commodore
  2522.     header file and then conditionally generate the #pragma lines based
  2523.     on whether you specified the -mi option to DCC.  The -mi option to
  2524.     DCC simply defines the preprocessor symbol __DICE_INLINE which causes
  2525.     the #pragma lines to be conditionally included.  It is important to
  2526.     note that great pains have been taken to allow you to turn on and off
  2527.     inline library calls for your program without having to modify the
  2528.     source in any way, shape, or form.
  2529.  
  2530.     .fd files are formatted very simply. For the Commodore libraries,
  2531.     these files are stored in dinclude:amigaxx/fd/".  Comments start with
  2532.     "*", commands start with "##", and everything else is assumed to be a
  2533.     function entry. The commands are:
  2534.  
  2535.     Command : Usage :         :
  2536.     ========+=======+============+======================================
  2537.         :    : base         : Base pointer name for this library
  2538.         :    : _DOSBase   : (DOSBase)
  2539.     --------+-------+------------+--------------------------------------
  2540.         :    : bias 30    : New negative function offset
  2541.         :    :         : (Negative 30)
  2542.     --------+-------+------------+--------------------------------------
  2543.         :    : public     : Until next
  2544.     --------+-------+------------+--------------------------------------
  2545.         :    : private    : Until next
  2546.     --------+-------+------------+--------------------------------------
  2547.         :    : end         : End marker
  2548.     --------+-------+------------+--------------------------------------
  2549.  
  2550.     The following function entry defines four parameters, which must be
  2551.     passed in registers A0,D0,A1 and D1 respectively.  A "/" separator is
  2552.     a hint to some programs that registers are in proper order to move
  2553.     from the stack with a single 68000 "MOVEM" instruction:
  2554.  
  2555.     OpenDevice(devName,unit,ioRequest,flags)(a0,d0/a1,d1)
  2556.  
  2557.     Library functions exist as negative offsets from the library base;
  2558.     ##bias sets a new negative offset.  Each function entry decrements
  2559.     the offset by six.
  2560.  
  2561. dice/flush                                                        dice/flush
  2562.  
  2563.     FUNCTION
  2564.     Flush Memory, Libraries, and Devices
  2565.  
  2566.     SYNOPSIS
  2567.     flush
  2568.  
  2569.     DESCRIPTION
  2570.     Flush causes a "memory panic," forcing all currently unused fonts,
  2571.     libraries, etc. to be removed from memory.  This is useful to free up
  2572.     large chunks of memory or force an old version of a library out of
  2573.     memory in order to test a new one.
  2574.  
  2575. dice/head                                                          dice/head
  2576.  
  2577.     FUNCTION
  2578.     Display start of a file
  2579.  
  2580.     SYNOPSIS
  2581.     head file
  2582.  
  2583.     DESCRIPTION
  2584.     Head prints the first ten lines of the specified file.
  2585.  
  2586. dice/ident                                                        dice/ident
  2587.  
  2588.     FUNCTION
  2589.     Identify Files
  2590.  
  2591.     SYNOPSIS
  2592.     ident [ -q ] [ file ...  ]
  2593.  
  2594.     DESCRIPTION
  2595.     Ident searches the named files or, if no file name appears, the
  2596.     standard input for all occurrences of the pattern $keyword:...$,
  2597.     where keyword is one of Author, Date, Header, Id, Locker, Log,
  2598.     Revision, RCSfile, Source, or State.  This command works much like
  2599.     the AmigaDOS version command.
  2600.  
  2601.     These patterns are normally inserted automatically by the RCS command
  2602.     co, but can also be inserted manually.    The option -q suppresses the
  2603.     warning given if there are no patterns in a file.
  2604.  
  2605.     Ident works on text files as well as object files and dumps.  For
  2606.     example, if the C program in file f.c contains
  2607.  
  2608.     char rcsid[] = "$Header: /home/dice/com/master/Doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:39:56 dice Exp dice $";
  2609.  
  2610.     and f.c is compiled into f.o, then the command will print:
  2611.  
  2612.     1> ident f.c f.o
  2613.     f.c: $Header: /home/dice/com/master/Doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:39:56 dice Exp dice $
  2614.     f.o: $Header: /home/dice/com/master/Doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:39:56 dice Exp dice $
  2615.  
  2616.     SEE ALSO
  2617.     ci, co, rcs, rcsdiff, rcsintro, rcsmerge, rlog
  2618.  
  2619. dice/istrip                                                      dice/istrip
  2620.  
  2621.     FUNCTION
  2622.     Strip Comments From Include Files
  2623.  
  2624.     SYNOPSIS
  2625.     ISTRIP destprefix wildcards
  2626.  
  2627.     DESCRIPTION
  2628.     ISTRIP will strip comments and extraneous whitespace from all files
  2629.     specified by wildcards and create an output file under the same name
  2630.     prefixed by destprefix. ISTRIP preserves the copyright notice, and
  2631.     replaces comments with blank lines to avoid changing any line
  2632.     numbering.
  2633.  
  2634.     ISTRIP is very stupid in that it will not create the destination
  2635.     directory hierarchy.  The COPY command in the example below basically
  2636.     does that for us, the copied files are extraneous and overwritten
  2637.     when ISTRIP is run.
  2638.  
  2639.     ISTRIP is useful mainly for developers who obtain later versions of
  2640.     the commented Amiga includes and want to create an uncommented
  2641.     version (The uncommented includes are much smaller, yielding faster
  2642.     compilation).
  2643.  
  2644.     EXAMPLE
  2645.     1> copy dinclude:amiga13  ram:amiga13  ALL  QUIET
  2646.     1> cd dinclude:
  2647.     1> istrip  ram:  amiga13/#?/#?
  2648.  
  2649. dice/lbmake                                                      dice/lbmake
  2650.  
  2651.     FUNCTION
  2652.     Create Link Library
  2653.  
  2654.     SYNOPSIS
  2655.     libmake file options
  2656.  
  2657.     DESCRIPTION
  2658.     Libmake is a utility that will scan a file listings sources files for
  2659.     a library, determine what is out of date, compile the out of date
  2660.     modules (compile .c modules, assemble .a modules), and JOIN the whole
  2661.     thing together in the end to create a library.    Libmake is useful for
  2662.     creating large libraries that would otherwise overflow the command
  2663.     line length limit in DMakefile.
  2664.  
  2665.     Libmake takes several arguments, some optional:
  2666.  
  2667.       file  specify the control file that contains a list of source modules,
  2668.         see below.
  2669.  
  2670.     -v  verbose operation
  2671.  
  2672.     -n  dry run (do not actually compile/assemble/join anything)
  2673.  
  2674.  -Dmacro[=def]
  2675.         specify DCPP macro, i.e.  #define equivalent to be passed to all
  2676.         compiles.
  2677.  
  2678.  -o object_dir
  2679.         specify object directory prefix, if a directory must end in '/'
  2680.         or ':', allowing both file prefixes and directory paths.
  2681.  
  2682.  -l library
  2683.         specify library output file, usually something.lib
  2684.  
  2685.     -clean  instead of compiling/assembling/join'ing the library, delete ALL
  2686.         object modules from object_dir relating to the library.
  2687.  
  2688.        -pr  pass -pr option to DCC
  2689.  
  2690.     -proto  pass -proto option to DCC
  2691.  
  2692.       -mRR  specify reg-call opts to DCC.
  2693.  
  2694.        -mD  pass -mD to DCC, causes DCC to use the large-data model.  Default
  2695.         is to use the small-data model
  2696.  
  2697.        -mC  pass -mC to DCC, causes DCC to use the large-code model.  Default
  2698.         is to use the small-data model
  2699.  
  2700.      -prof  pass -prof to DCC, causes profiling code to be generated for all
  2701.         the routines in the library.
  2702.  
  2703.     CONTROL FILE
  2704.     The control file is named files.something by convention, for example,
  2705.     'files.c3lib', which happens to be the control file used generate
  2706.     C*.LIB.
  2707.  
  2708.     A control file may contain blank lines, lines that begin with a
  2709.     semi-colon (comments), and lines containing a file name optionally
  2710.     preceded by a '*'.  Here is an example:
  2711.  
  2712.     ; Full C library
  2713.     assert/assert.c
  2714.     assert/abort.c
  2715.     amiga/exit.c
  2716.     amiga/main.c
  2717.     amiga/wbmain.c
  2718.     *amiga/c.a
  2719.     *amiga/c_pi.a
  2720.     *amiga/c_pr.a
  2721.     *amiga/x.a
  2722.     amiga/config.a
  2723.  
  2724.     Lines beginning with a '*' tell LIBMAKE to compile/assemble the file
  2725.     but NOT to include the object module in the generated output library.
  2726.  
  2727.     Thus, in the above example amiga/c.a would be assembled but not made
  2728.     part of the DLIB:C.LIB
  2729.  
  2730.     Also note that the path specified for a given file is appended to the
  2731.     -o (object directory) specification.  Thus, if you were to use the
  2732.     following libmake line:
  2733.  
  2734.     1> libmake files.c3lib -o dtmp:xx/ -l dlib:xx.lib -pr -proto
  2735.  
  2736.     Then object modules would be created as follows:
  2737.  
  2738.     DTMP:XX/assert/assert.o
  2739.     DTMP:XX/assert/abort.o
  2740.     DTMP:XX/amiga/exit.o
  2741.     etc..
  2742.  
  2743.     You probably want to pre-create the directory structure required.
  2744.     Please refer to the library source archive for examples (no less than
  2745.     DMakefile's calling libmake to regenerate every single DICE library
  2746.     that exists!)
  2747.  
  2748.     NAMING CONVENTIONS
  2749.     In order to simplify the process, libmake makes assumptions about the
  2750.     type of file based on the extension.
  2751.  
  2752.     Extension : Libmake Action
  2753.     ==========+==========================================================
  2754.     .a      : Assemble with DAS
  2755.     ----------+----------------------------------------------------------
  2756.     .a68      : Assemble with external assembler A68K
  2757.     ----------+----------------------------------------------------------
  2758.     .o      : Insert specified object into destination library (raw
  2759.           : copy)
  2760.     ----------+----------------------------------------------------------
  2761.     .lib      : Insert specified library into destination library (raw
  2762.           : copy)
  2763.     ----------+----------------------------------------------------------
  2764.     other      : Assumed to be a C source file to compile with DCC
  2765.     ----------+----------------------------------------------------------
  2766.  
  2767. dice/libtos                                                      dice/libtos
  2768.  
  2769.     FUNCTION
  2770.     Library Converter
  2771.  
  2772.     SYNOPSIS
  2773.     LIBTOS source dest
  2774.  
  2775.     DESCRIPTION
  2776.     This program converts the Commodore supplied amiga.lib from large
  2777.     data model to small data model.  You must convert amiga.lib before
  2778.     you can use it with the DICE system to generate residentable
  2779.     programs.
  2780.  
  2781.     Note that this isn't required, but a small-data amiga.lib will
  2782.     generate faster code with fewer reloc32's (A reloc32 is a 32-bit
  2783.     relocation, it uses up space in an executable and takes extra time to
  2784.     load).
  2785.  
  2786.     The small-data-model version of amiga.lib is called amigas.lib
  2787.  
  2788.     1> cd DLIB:
  2789.     1> LIBTOS amiga.lib amigas.lib
  2790.  
  2791. dice/loadabs                                                    dice/loadabs
  2792.  
  2793.     FUNCTION
  2794.     Absolute Locator
  2795.  
  2796.     SYNOPSIS
  2797.     LoadAbs exefile -o outfile -A addr
  2798.  
  2799.     DESCRIPTION
  2800.     LoadAbs takes a standard Amiga executable and generates an image file
  2801.     relocated to the absolute location specified.  The image file is
  2802.     structured in the same order as the hunks appear in the Amiga
  2803.     executable.  BSS hunks will generate 0's in the image file.
  2804.  
  2805.    exefile  Executable to do the absolute relocation on
  2806.  
  2807.  -O outfile
  2808.         Resulting image file
  2809.  
  2810.    -A addr  0xHEX absolute relocation address
  2811.  
  2812.         || NOTE: This program will do 32 bit relocations only.  Generally
  2813.         || you only use LoadAbs with -mD -mC compiled programs.
  2814.  
  2815. dice/loadfile                                                  dice/loadfile
  2816.  
  2817.     FUNCTION
  2818.     Load & Hold a File in Memory
  2819.  
  2820.     SYNOPSIS
  2821.     LoadFile filename
  2822.  
  2823.     DESCRIPTION
  2824.     Loadfile is very simple.  It just loads a binary file into memory,
  2825.     and holds it there until CTRL-C is pressed. This lets you examine the
  2826.     file with a debugger, or Metascope or some such tool.  Useful for ROM
  2827.     work.
  2828.  
  2829. dice/makeindex                                                dice/makeindex
  2830.  
  2831.     FUNCTION
  2832.     Build Index File for Online Help System
  2833.  
  2834.     SYNOPSIS
  2835.     MakeIndex outfile pattern
  2836.  
  2837.     DESCRIPTION
  2838.     MakeIndex builds a lookup file for the DICEHelp online help system.
  2839.     This file is normally called "s:dicehelp.index". Entries are always
  2840.     appended to outfile to allow building the index file in steps.    Any
  2841.     number of files may be specified with wildcards in pattern. MakeIndex
  2842.     detects DICE documentation, AutoDoc files from Commodore, C include
  2843.     files and Assembler include files. Documentation files are indexed by
  2844.     the name of the function.  C include files are indexed by structures.
  2845.     The names of assembler includes are recorded, but no additional
  2846.     processing is done.
  2847.  
  2848.     MakeIndex is normally run during the installation, or later by
  2849.     selecting the installer option "refresh DICEHelp index file."  You
  2850.     may append your own selections using MakeIndex.
  2851.  
  2852.     SEE ALSO
  2853.     Chapter , Online help.
  2854.  
  2855. dice/makeproto                                                dice/makeproto
  2856.  
  2857.     FUNCTION
  2858.     Easily Create Prototype File
  2859.  
  2860.     SYNOPSIS
  2861.     makeproto infile outfile
  2862.  
  2863.     DESCRIPTION
  2864.     Collects lines beginning with the word Prototype from all your source
  2865.     files into a single header file.  Each source module in a project
  2866.     normally includes a common header file, DEFS.H, which contains items
  2867.     common to the project.    The idea is to add the following to your
  2868.     DEFS.H file:
  2869.  
  2870.     #define Prototype extern
  2871.     #define Local static /* or as nothing at all */
  2872.     #include "protos.h"   /* prototype file generated by MAKEPROTO
  2873.  
  2874.     Each source would contain prototypes that look like this (shown with
  2875.     example declarations):
  2876.  
  2877.     Prototype int FuGlob;
  2878.     Prototype void FuBar(int);
  2879.     Prototype struct MyFu *FuBar2(short);
  2880.  
  2881.     int FuGlob; /* etc... */
  2882.  
  2883.     void FuBar(int x) {
  2884.     ...
  2885.     }
  2886.  
  2887.     You then create a PROTOS.H file by running MAKEPROTO on all source
  2888.     files.    Among the tricks that are possible is the use of structure
  2889.     tags instead of typedefs in the prototypes themselves, allowing the
  2890.     prototype file to be #include'd during the normal course of
  2891.     compilation without necessarily requiring precursor includes to
  2892.     guarantee the validity of the types you use.  Since a declaration
  2893.     containing a pointer to an undefined structure is valid as long as
  2894.     you do not try to access specific elements in the structure, this
  2895.     allows you to bring in prototypes for all functions in your entire
  2896.     project whether you use them in any specific source module or not.
  2897.  
  2898.     MAKEPROTO has one additional feature which makes its usage all the
  2899.     more efficient... if the specified output file already exists
  2900.     MAKEPROTO will compare its output with the existing file and not
  2901.     modify the date stamp of the file unless the output diffs.  This is
  2902.     especially useful when you use precompiled includes where you might
  2903.     want to include a dependency to force the precompiled include to be
  2904.     recomputed if any header file OR the prototype file changes.  Without
  2905.     this feature you would have to force the precompiled include to be
  2906.     recomputed every time you modify a source file because you would not
  2907.     be able to determine whether that modification resulted in a change
  2908.     in the prototype file PROTOS.H or not.
  2909.  
  2910. dice/merge                                                        dice/merge
  2911.  
  2912.     FUNCTION
  2913.     Three-Way File Merge
  2914.  
  2915.     SYNOPSIS
  2916.     merge
  2917.  
  2918.     DESCRIPTION
  2919.     Merge is used by rcsmerge to do three way file merges - integrating
  2920.     changes from several revisions into a single complete file.
  2921.  
  2922.     SEE ALSO
  2923.     rcsmerge
  2924.  
  2925. dice/rcs                                                            dice/rcs
  2926.  
  2927.     FUNCTION
  2928.     Change RCS File Attributes
  2929.  
  2930.     SYNOPSIS
  2931.     rcs [ options ] file ...
  2932.  
  2933.     DESCRIPTION
  2934.     Rcs creates new RCS files or changes attributes of existing ones.  An
  2935.     RCS file contains multiple revisions of text, an access list, a
  2936.     change log, descriptive text, and some control attributes.  For rcs
  2937.     to work, the caller's login name must be on the access list, except
  2938.     if the access list is empty, the caller is the owner of the file or
  2939.     the superuser, or the -i option is present.
  2940.  
  2941.     Files ending in ,v are RCS files, all others are working files.  If a
  2942.     working file is given, rcs tries to find the corresponding RCS file
  2943.     first in directory ./RCS and then in the current directory, as
  2944.     explained in co.
  2945.  
  2946.     -i  creates and initializes a new RCS file, but does not deposit any
  2947.         revision.  If the RCS file has no path prefix, rcs tries to place
  2948.         it first into the subdirectory ./RCS, and then into the current
  2949.         directory.    If the RCS file already exists, an error message is
  2950.         printed.
  2951.  
  2952.   -alogins  appends the login names appearing in the comma-separated list
  2953.         logins to the access list of the RCS file.
  2954.  
  2955.  -Aoldfile  appends the access list of oldfile to the access list of the RCS
  2956.         file.
  2957.  
  2958.  -e[logins]
  2959.         erases the login names appearing in the comma-separated list
  2960.         logins from the access list of the RCS file.  If logins is
  2961.         omitted, the entire access list is erased.
  2962.  
  2963.    -b[rev]  sets the default branch to rev.  If rev is omitted, the default
  2964.         branch is reset to the (dynamically) highest branch on the trunk.
  2965.  
  2966.   -cstring  sets the comment leader to string.    The comment leader is printed
  2967.         before every log message line generated by the keyword $Log: dice_commands.doc,v $
  2968. # Revision 30.8  1994/08/18  05:39:56  dice
  2969. # .
  2970. #
  2971. # Revision 30.0  1994/06/10  17:57:04  dice
  2972. # .
  2973. #
  2974. # Revision 30.0  1994/06/10  17:57:04  dice
  2975. # .
  2976. #
  2977.         during checkout (see co).  This is useful for programming
  2978.         languages without multi-line comments.  During rcs -i or initial
  2979.         ci, the comment leader is guessed from the suffix of the working
  2980.         file.
  2981.  
  2982.    -l[rev]  locks the revision with number rev.  If a branch is given, the
  2983.         latest revision on that branch is locked.  If rev is omitted, the
  2984.         latest revision on the default branch is locked.  Locking
  2985.         prevents overlapping changes.  A lock is removed with ci or rcs
  2986.         -u (see below).
  2987.  
  2988.    -u[rev]  unlocks the revision with number rev.  If a branch is given, the
  2989.         latest revision on that branch is unlocked.  If rev is omitted,
  2990.         the latest lock held by the caller is removed.  Normally, only
  2991.         the locker of a revision may unlock it.  Somebody else unlocking
  2992.         a revision breaks the lock.
  2993.  
  2994.     -L  Sets locking to strict.  Strict locking means that the owner of
  2995.         an RCS file is not exempt from locking for checkin.  This option
  2996.         should be used for files that are shared.
  2997.  
  2998.     -U  Sets locking to non-strict.  Non-strict locking means that the
  2999.         owner of a file need not lock a revision for checkin.  This
  3000.         option should NOT be used for files that are shared.
  3001.  
  3002.  -nname[:rev]
  3003.         Associates the symbolic name name with the branch or revision
  3004.         rev. Rcs prints an error message if name is already associated
  3005.         with another number. If rev is omitted, the symbolic name is
  3006.         deleted.
  3007.  
  3008.  -Nname[:rev]
  3009.         Same as -n, except that it overrides a previous assignment of
  3010.         name.
  3011.  
  3012.    -orange  Deletes ("outdates") the revisions given by range.  A range
  3013.         consisting of a single revision number means that revision.  A
  3014.         range consisting of a branch number means the latest revision on
  3015.         that branch. A range of the form rev1-rev2 means revisions rev1
  3016.         to rev2 on the same branch, -rev  means from the beginning of the
  3017.         branch containing rev up to and including rev, and rev means from
  3018.         revision rev to the end of the branch containing rev.  None of
  3019.         the outdated revisions may have branches or locks.
  3020.  
  3021.     -q  Quiet mode; diagnostics are not printed.
  3022.  
  3023.  -sstate[:rev]
  3024.         sets the state attribute of the revision rev to state.  If rev is
  3025.         a branch number, the latest revision on that branch is assumed.
  3026.         If rev is omitted, the latest revision on the default branch is
  3027.         assumed.  Any identifier is acceptable for state.  A useful set
  3028.         of states is Exp (for experimental), Stab (for stable), and Rel
  3029.         (for released).  By default, ci sets the state of a revision to
  3030.         Exp.
  3031.  
  3032.  -t[txtfile]
  3033.         writes descriptive text into the RCS file (deletes the existing
  3034.         text).  If txtfile is omitted, rcs prompts the user for text
  3035.         supplied from the standard input, terminated with a line
  3036.         containing a single . or CTRL-\.  Otherwise, the descriptive text
  3037.         is copied from the file txtfile.  If the -i option is present,
  3038.         descriptive text is requested even if -t is not given.  The
  3039.         prompt is suppressed if the standard input is not a terminal.
  3040.  
  3041.     DIAGNOSTICS
  3042.     The RCS file name and the revisions outdated are written to the
  3043.     diagnostic output.  The exit status always refers to the last RCS
  3044.     file operated upon, and is 0 if the operation was successful, 1
  3045.     otherwise.
  3046.  
  3047.     FILES
  3048.     rcs creates a semaphore file in the same directory as the RCS file to
  3049.     prevent simultaneous update.  For changes, rcs always creates a new
  3050.     file.  On successful completion, rcs deletes the old one and renames
  3051.     the new one.
  3052.  
  3053.     SEE ALSO
  3054.     co, ci, ident, rcsdiff, rcsintro, rcsmerge, rlog
  3055.  
  3056. dice/rcsclean                                                  dice/rcsclean
  3057.  
  3058.     FUNCTION
  3059.     Clean up RCS Work Files
  3060.  
  3061.     SYNOPSIS
  3062.     rcsclean [ -rrev ] [ -qrev ] file...
  3063.  
  3064.     DESCRIPTION
  3065.     Rcsclean removes working files that were checked out and never
  3066.     modified.  For each file given, rcsclean compares the working file
  3067.     and a revision in the corresponding RCS file.  If it finds no
  3068.     difference, it removes the working file, and, if the revision was
  3069.     locked by the caller, unlocks the revision.
  3070.  
  3071.     A file name ending in ',v' is an RCS file name, otherwise a working
  3072.     file name.  Rcsclean derives the working file name from the RCS file
  3073.     name and vice versa, as explained in co.  Pairs consisting of both an
  3074.     RCS and a working file name may also be specified.
  3075.  
  3076.     -r Rev  specifies with which revision the working file is compared.  If
  3077.         rev is omitted, rcsclean compares the working file with the
  3078.         latest revision on the default branch (normally the highest
  3079.         branch on the trunk).
  3080.  
  3081.     -q  suppresses diagnostics.
  3082.  
  3083.         Rcsclean is useful for "clean" targets in Makefiles.  Note that
  3084.         rcsdiff prints out the differences.  Also, ci normally asks
  3085.         whether to check in a file if it was not changed.
  3086.  
  3087.     EXAMPLES
  3088.     rcsclean *.c *.h
  3089.  
  3090.     The above command removes all working files ending in ".c" or ".h"
  3091.     that were not changed since their checkout.
  3092.  
  3093.     DIAGNOSTICS
  3094.     The exit status is 0 if there were no differences during the last
  3095.     comparison or if the last working file did not exist, 1 if there were
  3096.     differences, and 2 if there were errors.
  3097.  
  3098.     SEE ALSO
  3099.     co, ci, ident, rcs, rcsdiff, rcsintro, rcsmerge, rlog
  3100.  
  3101. dice/rcsdiff                                                    dice/rcsdiff
  3102.  
  3103.     FUNCTION
  3104.     Compare RCS Revisions
  3105.  
  3106.     SYNOPSIS
  3107.     rcsdiff [ -biwt ] [ -cefhn ] [ -q ] [ -rrev1 ] [ -rrev2 ] file ...
  3108.  
  3109.     DESCRIPTION
  3110.     Rcsdiff runs diff to compare two revisions of each RCS file given.  A
  3111.     file name ending in ',v' is an RCS file name, otherwise a working
  3112.     file name.  Rcsdiff derives the working file name from the RCS file
  3113.     name and vice versa, as explained in co.  Pairs consisting of both an
  3114.     RCS and a working file name may also be specified.
  3115.  
  3116.     The options -b, -i, -w, -t, -c, -e, -f, and -h, have the same effect
  3117.     as described in diff.
  3118.  
  3119.     -n  generates an edit script of the format used by RCS
  3120.  
  3121.     -q  Suppresses diagnostic output.
  3122.  
  3123.         If both rev1 and rev2 are omitted, rcsdiff compares the latest
  3124.         revision on the default branch (normally the highest branch on
  3125.         the trunk) with the contents of the corresponding working file.
  3126.         This is useful for determining what you changed since the last
  3127.         checkin.
  3128.  
  3129.         If rev1 is given, but rev2 is omitted, rcsdiff compares revision
  3130.         rev1 of the RCS file with the contents of the corresponding
  3131.         working file.
  3132.  
  3133.         If both rev1 and rev2 are given, rcsdiff compares revisions rev1
  3134.         and rev2 of the RCS file.
  3135.  
  3136.         Both rev1 and rev2 may be given numerically or symbolically, and
  3137.         may actually be attached to any of the options.
  3138.  
  3139.     EXAMPLES
  3140.     rcsdiff f.c
  3141.  
  3142.     The above command runs diff, comparing the currently checked out
  3143.     version with the latest revision stored on the current trunk.
  3144.  
  3145.     DIAGNOSTICS
  3146.     The exit status is 0 if there were no differences during the last
  3147.     comparison, 1 if there were differences, and 2 if there were errors.
  3148.  
  3149.     SEE ALSO
  3150.     ci, co, diff, ident, rcs, rcsintro, rcsmerge, rlog
  3151.  
  3152. dice/rcsmerge                                                  dice/rcsmerge
  3153.  
  3154.     FUNCTION
  3155.     Merge RCS Revisions
  3156.  
  3157.     SYNOPSIS
  3158.     rcsmerge -rrev1 [ -rrev2 ] [ -p ] file
  3159.  
  3160.     DESCRIPTION
  3161.     Rcsmerge incorporates the changes between rev1 and rev2 of an RCS
  3162.     file into the corresponding working file.  If -p is given, the result
  3163.     is printed on the standard output, otherwise the result overwrites
  3164.     the working file.
  3165.  
  3166.     A file name ending in ',v' is an RCS file name, otherwise a working
  3167.     file name.  Rcsmerge derives the working file name from the RCS file
  3168.     name and vice versa, as explained in co.  A pair consisting of both
  3169.     an RCS and a working file name may also be specified.
  3170.  
  3171.     Rev1 may not be omitted.  If rev2 is omitted, the latest revision on
  3172.     the default branch (normally the highest branch on the trunk) is
  3173.     assumed.  Both rev1 and rev2 may be given numerically or
  3174.     symbolically.
  3175.  
  3176.     Rcsmerge prints a warning if there are overlaps, and delimits the
  3177.     overlapping regions as explained in co -j.  The command is useful for
  3178.     incorporating changes into a checked-out revision.
  3179.  
  3180.     EXAMPLES
  3181.     Suppose you have released revision 2.8 of f.c.    Assume furthermore
  3182.     that you just completed revision 3.4, when you receive updates to
  3183.     release 2.8 from someone else.    To combine the updates to 2.8 and
  3184.     your changes between 2.8 and 3.4, put the updates to 2.8 into file
  3185.     f.c and execute
  3186.  
  3187.     rcsmerge -p -r2.8 -r3.4 f.c >f.merged.c
  3188.  
  3189.     Then examine f.merged.c.  Alternatively, if you want to save the
  3190.     updates to 2.8 in the RCS file, check them in as revision 2.8.1.1 and
  3191.     execute co -j:
  3192.  
  3193.     ci -r2.8.1.1 f.c
  3194.     co -r3.4 -j2.8:2.8.1.1 f.c
  3195.  
  3196.     As another example, the following command undoes the changes between
  3197.     revision 2.4 and 2.8 in your currently checked out revision in f.c.
  3198.  
  3199.     rcsmerge -r2.8 -r2.4 f.c
  3200.  
  3201.     Note the order of the arguments, and that f.c will be overwritten.
  3202.  
  3203.     SEE ALSO
  3204.     ci, co, merge, ident, rcs, rcsdiff, rlog
  3205.  
  3206.     BUGS
  3207.     Rcsmerge does not work on files that contain lines with a single ..
  3208.  
  3209. dice/rlog                                                          dice/rlog
  3210.  
  3211.     FUNCTION
  3212.     Display RCS History
  3213.  
  3214.     SYNOPSIS
  3215.     rlog [ options ] file ...
  3216.  
  3217.     DESCRIPTION
  3218.     Rlog prints information about RCS files.  Files ending in ,v are RCS
  3219.     files, all others are working files.  If a working file is given,
  3220.     rlog will locate the corresponding RCS file.
  3221.  
  3222.     Rlog prints the following information for each RCS file: RCS file
  3223.     name, working file name, head (i.e., the number of the latest
  3224.     revision on the trunk), default branch, access list, locks, symbolic
  3225.     names, suffix, total number of revisions, number of revisions
  3226.     selected for printing, and descriptive text.  This is followed by
  3227.     entries for the selected revisions in reverse chronological order for
  3228.     each branch.  For each revision, rlog prints revision number, author,
  3229.     date/time, state, number of lines added/deleted (with respect to the
  3230.     previous revision), locker of the revision (if any), and log message.
  3231.     Without options, rlog prints complete information.  The options below
  3232.     restrict this output.
  3233.  
  3234.     -L  ignores RCS files that have no locks set; convenient in
  3235.         combination with -R, -h, or -l.
  3236.  
  3237.     -R  only prints the name of the RCS file; convenient for translating
  3238.         a working file name into an RCS file name.
  3239.  
  3240.     -h  prints only RCS file name, working file name, head, default
  3241.         branch, access list, locks, symbolic names, and suffix.
  3242.  
  3243.     -t  prints the same as -h, plus the descriptive text.
  3244.  
  3245.     -b  prints information about the revisions on the default branch
  3246.         (normally the highest branch on the trunk).
  3247.  
  3248.    -ddates  prints information about revisions with a checkin date/time in
  3249.         the ranges given by the semicolon- separated list of dates.  A
  3250.         range of the form d1<d2 or d2>d1 selects the revisions that were
  3251.         deposited between d1 and d2, (inclusive).  A range of the form <d
  3252.         or d> selects all revisions dated d or earlier.  A range of the
  3253.         form d< or >d selects all revisions dated d or later.  A range of
  3254.         the form d selects the single, latest revision dated d or
  3255.         earlier.  The date/time strings d, d1, and d2 are in the free
  3256.         format explained in co.  Quoting is sometimes necessary,
  3257.         especially for < and >.  Note that the separator is a semicolon.
  3258.  
  3259.  -l[lockers]
  3260.         prints information about locked revisions.    If the
  3261.         comma-separated list lockers of login names is given, only the
  3262.         revisions locked by the given login names are printed.  If the
  3263.         list is omitted, all locked revisions are printed.
  3264.  
  3265.  -rrevisions
  3266.         prints information about revisions given in the comma-separated
  3267.         list revisions of revisions and ranges.  A range rev1-rev2 means
  3268.         revisions rev1 to rev2 on the same branch, -rev means revisions
  3269.         from the beginning of the branch up to and including rev, and
  3270.         rev- means revisions starting with rev to the end of the branch
  3271.         containing rev.  An argument that is a branch means all revisions
  3272.         on that branch.  A range of branches means all revisions on the
  3273.         branches in that range.
  3274.  
  3275.   -sstates  prints information about revisions whose state attributes match
  3276.         one of the states given in the comma-separated list states.
  3277.  
  3278.  -w[logins]
  3279.         prints information about revisions checked in by users with login
  3280.         names appearing in the comma- separated list logins.  If logins
  3281.         is omitted, the user's login is assumed.
  3282.  
  3283.         Rlog prints the intersection of the revisions selected with the
  3284.         options -d, -l, -s, -w, intersected with the union of the
  3285.         revisions selected by -b and -r.
  3286.  
  3287.     EXAMPLES
  3288.     rlog -L -R RCS/*,v
  3289.     rlog -L -h RCS/*,v
  3290.     rlog -L -l RCS/*,v
  3291.     rlog RCS/*,v
  3292.  
  3293.     The first command prints the names of all RCS files in the
  3294.     subdirectory RCS which have locks.  The second command prints the
  3295.     headers of those files, and the third prints the headers plus the log
  3296.     messages of the locked revisions.  The last command prints complete
  3297.     information.
  3298.  
  3299.     DIAGNOSTICS
  3300.     The exit status always refers to the last RCS file operated upon, and
  3301.     is 0 if the operation was successful, 1 otherwise.
  3302.  
  3303.     SEE ALSO
  3304.     ci, co, ident, rcs, rcsdiff, rcsintro, rcsmerge, section
  3305.  
  3306. dice/romable                                                    dice/romable
  3307.  
  3308.     FUNCTION
  3309.     Generate Romable Image
  3310.  
  3311.     SYNOPSIS
  3312.     Romable exeFile -o outFile [-o out2] -C addr -D addr  -pi
  3313.  
  3314.     DESCRIPTION
  3315.     Romable takes an executable compiled by DICE, and generates a binary
  3316.     image.    This is normally used to generate a file for programming into
  3317.     ROM.
  3318.  
  3319.    exeFile  input executable linked with dlink
  3320.  
  3321.  -o outFile
  3322.         output binary (unformatted -- raw).  If TWO -o options are
  3323.         specified the two output files will have even bytes and odd bytes
  3324.         respectively, which is what you need when you must program two
  3325.         eproms (one on the LSB data lines and one on the MSB data lines).
  3326.  
  3327.    -C addr  code start address, 0octal, decimal, or 0xHEX
  3328.  
  3329.    -D addr  data start address, 0octal, decimal, or 0xHEX
  3330.  
  3331.        -DC  place actual data+bss just after code (i.e.  the result is
  3332.         intended to be downloaded into RAM, there is no duplicate data in
  3333.         this case). '-D addr' is not specified in this case
  3334.  
  3335.        -pi  generate a position independent module.  Neither -C or -D are
  3336.         specified in this case, and Romable will warn you have any
  3337.         absolute references.
  3338.  
  3339.         Note that your custom startup code determines how much of
  3340.         __autoinit and __autoexit is to be supported.  Note especially
  3341.         that __autoinit0 MUST BE SUPPORTED because DICE will generate
  3342.         __autoinit0 sections to handle 32 bit data relocations run-time.
  3343.  
  3344.         Romable generates a raw output file or files with the EPROM code
  3345.         first, and initialized data after the main code (still in EPROM)
  3346.         which, as has already been described, will be copied to RAM on
  3347.         reset by your startup routine.
  3348.  
  3349.         This startup-copying of initialized data and clearing of BSS
  3350.         makes it extremely easy to use DICE to generate ROMED
  3351.         applications without having to deal with major porting
  3352.         considerations.
  3353.  
  3354. dice/touch                                                        dice/touch
  3355.  
  3356.     FUNCTION
  3357.     Update File Datestamp
  3358.  
  3359.     SYNOPSIS
  3360.     touch file
  3361.  
  3362.     DESCRIPTION
  3363.     Touch bumps the date of a file without changing the contents.  This
  3364.     is useful to force utilities like VMake and DMake to recompile source
  3365.     files.
  3366.  
  3367. dice/ttxsame                                                    dice/ttxsame
  3368.  
  3369.     FUNCTION
  3370.     Helper Program for Integrated Error Scripts
  3371.  
  3372.     DESCRIPTION
  3373.     ttxsame is a helper program used by the integrated error scripts to
  3374.     start the TurboText editor.
  3375.  
  3376. dice/VMake                                                        dice/VMake
  3377.  
  3378.     FUNCTION
  3379.     Visual Interface to DICE
  3380.  
  3381.     DESCRIPTION
  3382.     VMake is a complete control center for DICE.  From within VMake you
  3383.     can manage a project, check files in or out of RCS, select files to
  3384.     edit, and finally compile and run your program.  VMake is an
  3385.     alternate to the CLI-based dcc program.  VMake is very flexible, and
  3386.     can be configured to control programs other than DICE.    See chapter
  3387.     for a full description.
  3388.  
  3389. dice/VOpts                                                        dice/VOpts
  3390.  
  3391.     FUNCTION
  3392.     Visual Interface for Setting Options
  3393.  
  3394.     DESCRIPTION
  3395.     VOpts provides an easy and powerful visual interface for selecting
  3396.     compiler options.  Options may be specified explicitly, or simply
  3397.     left to defaults.  VOpts is very flexible, can can be configured to
  3398.     set options for any program, not just DICE.  See chapter for all the
  3399.     details.
  3400.  
  3401. dice/wbrun                                                        dice/wbrun
  3402.  
  3403.     FUNCTION
  3404.     Simulate Starting a Program From Workbench
  3405.  
  3406.     SYNOPSIS
  3407.     wbrun file
  3408.  
  3409.     DESCRIPTION
  3410.     Wbrun is used by VMake to simulate the method used by the Amiga
  3411.     Workbench to start programs.
  3412.  
  3413. dice/wc                                                              dice/wc
  3414.  
  3415.     FUNCTION
  3416.     Count Elements in a File
  3417.  
  3418.     SYNOPSIS
  3419.     wc file ...
  3420.  
  3421.     DESCRIPTION
  3422.     wc counts the number of characters, words, and lines in each
  3423.     specified file and prints a total at the end.
  3424.  
  3425.     This page is not blank.
  3426.  
  3427.